Quick check of the first no-genetic data demultiplex sequencing from the pilot. NPCs

library(Seurat)
The legacy packages maptools, rgdal, and rgeos, underpinning this package
will retire shortly. Please refer to R-spatial evolution reports on
https://r-spatial.org/r/2023/05/15/evolution4.html for details.
This package is now running under evolution status 0 
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
Attaching SeuratObject
Warning message:
R graphics engine version 15 is not supported by this version of RStudio. The Plots tab will be disabled until a newer version of RStudio is installed. 
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ──────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.2     ✔ purrr   1.0.1
✔ tibble  3.2.1     ✔ dplyr   1.1.2
✔ tidyr   1.3.0     ✔ stringr 1.5.0
✔ readr   2.1.3     ✔ forcats 0.5.2
── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
#library(DoubletFinder)
library(enrichR)
Welcome to enrichR
Checking connection ... 
Enrichr ... Connection is Live!
FlyEnrichr ... Connection is available!
WormEnrichr ... Connection is available!
YeastEnrichr ... Connection is available!
FishEnrichr ... Connection is available!
OxEnrichr ... Connection is available!
library(clustree)
Loading required package: ggraph
#library("scClassify")
#library(SingleCellExperiment)
#library("Matrix")

Read in the data

seu <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/seu_souporcell_ADHD.rds")
colnames(seu@meta.data) # shows you the meta data

unique(seu$orig.ident)
unique(seu$souporcell_assignment)
unique(seu$souporcell_status)
dim(seu)

table(seu$souporcell_assignment)

Look at the sequencing


VlnPlot(seu, features = c("nCount_RNA","nFeature_RNA"), pt.size = 0.001)
VlnPlot(seu, features = c("nFeature_RNA"), pt.size = 0.001, y.max = 500)
VlnPlot(seu, features = c("nCount_RNA"), pt.size = 0.001, y.max = 50000)
VlnPlot(seu, features = c("nCount_RNA"), pt.size = 0.001, y.max = 5000)

seu$nFeature_RNA %>% summary
seu$nCount_RNA %>% summary

table(seu$souporcell_status)
dim(seu)

Calculate the percent mitochondrial genes

seu <- PercentageFeatureSet(seu, pattern = "^MT-", col.name = "percent.MT")
seu$percent.MT %>% summary

VlnPlot(seu, features = "percent.MT", pt.size = 0.001)
VlnPlot(seu, features = "percent.MT", pt.size = 0.001, y.max = 20)

I’ll use 10% as a cutoff and check if this removes more of the low read cells. I believe this object is already the CellRanger Filtered object.

#Remove any cells with more than 10% mitochondrial counts
#seu.ft <- subset(seu, percent.MT < 10)
#dim(seu)
#dim(seu.ft)
# removed 656 cells
seu.ft <- subset(seu, percent.MT < 20)
dim(seu)
dim(seu.ft)

# removed 339 cells
VlnPlot(seu.ft, features = c("nCount_RNA","nFeature_RNA","percent.MT"), pt.size = 0.001)
VlnPlot(seu, features = c("nCount_RNA"), group.by = "souporcell_status", y.max = 6000)
Warning: Removed 14234 rows containing non-finite values (`stat_ydensity()`).
Warning: Removed 14234 rows containing missing values (`geom_point()`).

VlnPlot(seu, features = c("nFeature_RNA"), group.by = "souporcell_status", y.max = 3000)
Warning: Removed 9246 rows containing non-finite values (`stat_ydensity()`).
Warning: Removed 9246 rows containing missing values (`geom_point()`).

I will filter for higher counts and lower counts

# we aren't adding any more filters here

clean up


seu <- seu.ft
rm(seu.ft)

Remove the doublets and the unassigned cells

dim(seu)
[1] 33538 14643

Now the workflow to make clusters

seu <- NormalizeData(seu, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
seu <- FindVariableFeatures(seu, selection.method = "vst", nfeatures = 2500)
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
var  <- VariableFeatures(seu)
top10 <- var[1:10]

p1 <- VariableFeaturePlot(seu) 
p2 <- LabelPoints(plot = p1, points = top10, repel = TRUE)
When using repel, set xnudge and ynudge to 0 for optimal results
p2
Warning: Transformation introduced infinite values in continuous x-axis

Scale and get PCA



#Linear dimensionality reduction
#Choosing the number of PCs can depend on how many cells you have
seu <- ScaleData(seu)
Centering and scaling data matrix

  |                                                                                      
  |                                                                                |   0%
  |                                                                                      
  |===========================                                                     |  33%
  |                                                                                      
  |=====================================================                           |  67%
  |                                                                                      
  |================================================================================| 100%
seu <- RunPCA(seu, assay = "RNA", npcs = 30)
PC_ 1 
Positive:  CKB, TUBB2B, CRABP1, TUBA1A, MAP1B, TTYH1, SOX2, POU3F2, BEX1, CRMP1 
       HMGA1, KIF5C, MAP2, RFX4, HES6, SOX11, DRAXIN, FGFBP3, PRTG, SRGAP3 
       HSP90AA1, TAGLN3, MIAT, LIN28A, GPM6B, SYT11, MAP6, ELAVL2, DCX, ELAVL3 
Negative:  COL3A1, S100A11, LGALS1, LUM, DCN, SPARC, COL1A1, PCOLCE, B2M, CDH11 
       SERPINH1, APOE, COL5A2, FN1, COL5A1, COL6A2, IFITM3, RRBP1, TIMP1, SELENOM 
       COLEC12, BGN, COL6A3, LAPTM4A, CALD1, COL1A2, EMP3, IFI16, TPM1, CCDC80 
PC_ 2 
Positive:  HMGB2, CENPF, TOP2A, CKS1B, MKI67, NUSAP1, BIRC5, TPX2, HMGB1, CCNB1 
       H2AFZ, ASPM, TUBA1B, H2AFX, UBE2C, CKS2, SMC4, MAD2L1, DLGAP5, GTSE1 
       CENPE, PTTG1, TYMS, TUBB4B, PCLAF, CDK1, CCNA2, CDC20, KIF20B, KIF11 
Negative:  STMN2, DCX, TAGLN3, ELAVL3, INA, STMN4, NEFM, KLHL35, ELAVL4, NHLH1 
       ONECUT2, SCG3, DCC, SRRM4, SYT1, INSM1, DLL3, CNTN2, MLLT11, CDKN1C 
       NCAM1, TFAP2B, CLDN5, ATCAY, SSTR2, SOX4, GDAP1L1, GNG3, ELAVL2, PCBP4 
PC_ 3 
Positive:  IFI44L, PRRX1, SMOC2, PTH1R, COLEC12, SFRP1, LRRC17, CDC42EP5, DAB2, TWIST1 
       SLC1A3, TPM1, ZIC1, CPE, NAV3, FOXC1, IFI44, FRZB, COL26A1, ID1 
       DACT2, PRRX2, LAMA4, FN1, TCIM, PMP22, EDNRA, ISG15, AKAP12, NFIA 
Negative:  KRT19, KRT8, THY1, TM4SF1, NPNT, S100A10, KRT18, HAND2, MYRF, NNMT 
       DSG2, MATN2, GATA6, FXYD5, RPP25, ASPHD1, PLP2, SLC9A3R1, KCNK6, LRRN4 
       PITX1, MAN1A1, CYBA, LMCD1, KDR, EZR, TAGLN2, COL1A1, BNC1, ANXA1 
PC_ 4 
Positive:  NEB, DES, KLHL41, TNNI1, TNNT1, TTN, CHRNA1, MYL1, MYL4, MYOG 
       TNNC2, ENO3, CDH15, MYOD1, ACTC1, TNNT2, MYLPF, SMPX, SGCA, AC020909.2 
       SYNPO2L, IL17B, MRLN, FITM1, MYH3, ATP2A1, SMYD1, TRIM55, TNNC1, RAPSN 
Negative:  PTN, IGFBP2, CRABP1, IFI16, GJA1, TTYH1, PDLIM1, ZIC2, COL11A1, CLU 
       SOX2, FABP5, IFIT3, MGP, PARP14, SFRP2, IFITM1, SERPING1, VCAN, SP100 
       HLA-C, SFRP1, C7, B2M, DAB2, ARHGAP29, IFI6, HLA-E, GPM6B, LIFR 
PC_ 5 
Positive:  RPL12, VIM, KRT19, MYLPF, IGFBP5, MYL1, LMCD1, TNNC2, AL359091.1, MYL4 
       HAND2, HES5, TNNC1, NPNT, NPPC, FXYD5, PITX1, NUPR1, KRT8, ACTC1 
       TNNI1, TNNT2, MYRF, SPRR2F, AL139246.5, IL17B, TTYH1, HSPB7, REC8, RPP25 
Negative:  ASPM, ARL6IP1, CENPE, NEFM, TPX2, UBE2S, GAP43, STMN2, TOP2A, MKI67 
       KPNA2, NCAM1, INA, GTSE1, SGO2, UBE2C, STMN4, ELAVL3, MAP1B, DLGAP5 
       NEFL, NUSAP1, PLK1, CENPF, ONECUT2, CCNB1, DCX, ACTB, KIF20B, HMMR 
PCAPlot(seu)


#Assess how many PCs capture most of the information in the data 
ElbowPlot(seu, ndims = 30)

20 PCs are good now make the UMAP


seu <- RunUMAP(seu, dims = 1:20, n.neighbors = 121)
Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
This message will be shown once per session
15:34:51 UMAP embedding parameters a = 0.9922 b = 1.112
15:34:51 Read 14643 rows and found 20 numeric columns
15:34:51 Using Annoy for neighbor search, n_neighbors = 121
15:34:51 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:34:53 Writing NN index file to temp file /var/folders/k4/khtkczkd5tn732ftjpwgtr240000gn/T//Rtmpo5qc3e/file10214368d353
15:34:53 Searching Annoy index using 1 thread, search_k = 12100
15:35:09 Annoy recall = 100%
15:35:09 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 121
15:35:13 Initializing from normalized Laplacian + noise (using irlba)
15:35:14 Commencing optimization for 200 epochs, with 1862028 positive edges
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:35:36 Optimization finished
DimPlot(seu, group.by = "orig.ident")

Find clusters


seu <- FindNeighbors(seu, dims = 1:20, k.param = 121)
Computing nearest neighbor graph
Computing SNN
# the number of clusters is dependent on the resolution a number from 0-2. 
# Higher values make more clusters
# we include 
seu <- FindClusters(seu, resolution = c(0,0.05,0.25,0.6,1,1.5) )
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 1.0000
Number of communities: 1
Elapsed time: 8 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9746
Number of communities: 5
Elapsed time: 12 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9249
Number of communities: 7
Elapsed time: 9 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8785
Number of communities: 10
Elapsed time: 13 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8384
Number of communities: 13
Elapsed time: 11 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2834426

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8012
Number of communities: 20
Elapsed time: 9 seconds
# we can visualize which cells are grouped together at different resolutions using clustree

clustree(seu, prefix = "RNA_snn_res.")


# 0.6 looks good to annotate.  Each cluster is splitting apart up to this point and then the cells start merging and changing clusters.

Visualize

DimPlot(seu, group.by = "RNA_snn_res.0.6", label = TRUE)

DimPlot(seu, group.by = "RNA_snn_res.1", label = TRUE)

# clustering could be improved

Look at expression profiles of known cell type markers



da_neurons <- c("TH","SLC6A3","SLC18A2","SOX6","NDNF","SNCG","ALDH1A1","CALB1","TACR2","SLC17A6","SLC32A1","OTX2","GRP","LPL","CCK","VIP")
NPC_orStemLike <- c("DCX","NEUROD1","TBR1","PCNA","MKI67","SOX2","NES","PAX6","MASH1")
mature_neurons = c("RBFOX3","SYP","DLG45","VAMP1","VAMP2","TUBB3","SYT1","BSN","HOMER1","SLC17A6")
excitatory_neurons = c("GRIA2","GRIA1","GRIA4","GRIN1","GRIN2B","GRIN2A","GRIN3A","GRIN3","GRIP1","CAMK2A")
inhbitory_neurons = inh = c("GAD1","GAD2", "GAT1","PVALB","GABR2","GABR1","GBRR1","GABRB2","GABRB1","GABRB3","GABRA6","GABRA1","GABRA4","TRAK2")
astrocytes <- c("GFAP","S100B","AQP4","APOE", "SOX9","SLC1A3")
oligodendrocytes <- c("MBP","MOG","OLIG1","OLIG2","SOX10")
opc <- 
radial_glia <- c("PTPRC","AIF1","ADGRE1", "VIM", "TNC","PTPRZ1","FAM107A","HOPX","LIFR",
              "ITGB5","IL6ST","SLC1A3")
epithelial <- c("HES1","HES5","SOX2","SOX10","NES","CDH1","NOTCH1")

microglia <- c("IBA1","P2RY12","P2RY13","TREM119", "GPR34","SIGLECH","TREM2",
               "CX3CR1","FCRLS","OLFML3","HEXB","TGFBR1", "SALL1","MERTK",
               "PROS1")

features_list <- c("MKI67","SOX2","POU5F1","DLX2","PAX6","SOX9","HES1","NES","RBFOX3","MAP2","NCAM1","CD24","GRIA2","GRIN2B","GABBR1","GAD1","GAD2","GABRA1","GABRB2","TH","ALDH1A1","LMX1B","NR4A2","CORIN","CALB1","KCNJ6","CXCR4","ITGA6","SLC1A3","CD44","AQP4","S100B", "PDGFRA","OLIG2","MBP","CLDN11","VIM","VCAM1")

short_list <- c("MKI67","SOX9","HES1","NES","DLX2","RBFOX3","MAP2","TH","CALB1","KCNJ6","SLC1A3","CD44","AQP4","S100B","OLIG2","MBP","VIM")

View on UMAP


Idents(seu) <- "RNA_snn_res.0.6"

for (i in NPC_c) {
  print(FeaturePlot(seu, features = i, min.cutoff = 'q1', max.cutoff = 'q97', label = TRUE))
}
Warning in FeaturePlot(seu, features = i, min.cutoff = "q1", max.cutoff = "q97",  :
  All cells have the same value (0) of FOXG1.

Idents(seu) <- "RNA_snn_res.0.6"

for (i in astrocytes) {
  print(FeaturePlot(seu, features = i, min.cutoff = 'q1', max.cutoff = 'q97', label = TRUE))
}


Idents(seu) <- "RNA_snn_res.0.6"

for (i in radial_glia) {
  print(FeaturePlot(seu, features = i, min.cutoff = 'q1', max.cutoff = 'q97', label = TRUE))
}
Warning in FeaturePlot(seu, features = i, min.cutoff = "q1", max.cutoff = "q97",  :
  All cells have the same value (0) of ADGRE1.

Idents(seu) <- "RNA_snn_res.0.6"

mature_neuronsB = c("RBFOX3","SYP","VAMP1","VAMP2","TUBB3","SYT1","BSN","HOMER1","SLC17A6")
for (i in mature_neuronsB) {
  print(FeaturePlot(seu, features = i, min.cutoff = 'q1', max.cutoff = 'q97', label = TRUE))
}

NA
NA
NA

Dot plots and heatmaps

DotPlot(seu, features = radial_glia)+ RotatedAxis()

DotPlot(seu, features = NPC_orStemLike) + RotatedAxis()
Warning in FetchData.Seurat(object = object, vars = features, cells = cells) :
  The following requested variables were not found: MASH1

DotPlot(seu, features = astrocytes) + RotatedAxis()

DotPlot(seu, features = NPC_c) + RotatedAxis()

Find cluster markers

Idents(seu) <- "RNA_snn_res.0.6"
ClusterMarkers <- FindAllMarkers(seu, only.pos = TRUE)
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~26s          
  |++                                                | 2 % ~25s          
  |++                                                | 3 % ~25s          
  |+++                                               | 4 % ~25s          
  |+++                                               | 5 % ~25s          
  |++++                                              | 6 % ~25s          
  |++++                                              | 7 % ~24s          
  |+++++                                             | 8 % ~23s          
  |+++++                                             | 9 % ~23s          
  |++++++                                            | 10% ~23s          
  |++++++                                            | 11% ~23s          
  |+++++++                                           | 12% ~23s          
  |+++++++                                           | 14% ~22s          
  |++++++++                                          | 15% ~22s          
  |++++++++                                          | 16% ~21s          
  |+++++++++                                         | 17% ~21s          
  |+++++++++                                         | 18% ~20s          
  |++++++++++                                        | 19% ~20s          
  |++++++++++                                        | 20% ~19s          
  |+++++++++++                                       | 21% ~19s          
  |+++++++++++                                       | 22% ~19s          
  |++++++++++++                                      | 23% ~18s          
  |++++++++++++                                      | 24% ~18s          
  |+++++++++++++                                     | 25% ~17s          
  |++++++++++++++                                    | 26% ~17s          
  |++++++++++++++                                    | 27% ~17s          
  |+++++++++++++++                                   | 28% ~16s          
  |+++++++++++++++                                   | 29% ~16s          
  |++++++++++++++++                                  | 30% ~16s          
  |++++++++++++++++                                  | 31% ~15s          
  |+++++++++++++++++                                 | 32% ~15s          
  |+++++++++++++++++                                 | 33% ~15s          
  |++++++++++++++++++                                | 34% ~15s          
  |++++++++++++++++++                                | 35% ~14s          
  |+++++++++++++++++++                               | 36% ~14s          
  |+++++++++++++++++++                               | 38% ~14s          
  |++++++++++++++++++++                              | 39% ~14s          
  |++++++++++++++++++++                              | 40% ~13s          
  |+++++++++++++++++++++                             | 41% ~13s          
  |+++++++++++++++++++++                             | 42% ~13s          
  |++++++++++++++++++++++                            | 43% ~13s          
  |++++++++++++++++++++++                            | 44% ~12s          
  |+++++++++++++++++++++++                           | 45% ~12s          
  |+++++++++++++++++++++++                           | 46% ~12s          
  |++++++++++++++++++++++++                          | 47% ~11s          
  |++++++++++++++++++++++++                          | 48% ~11s          
  |+++++++++++++++++++++++++                         | 49% ~11s          
  |+++++++++++++++++++++++++                         | 50% ~11s          
  |++++++++++++++++++++++++++                        | 51% ~11s          
  |+++++++++++++++++++++++++++                       | 52% ~10s          
  |+++++++++++++++++++++++++++                       | 53% ~10s          
  |++++++++++++++++++++++++++++                      | 54% ~10s          
  |++++++++++++++++++++++++++++                      | 55% ~10s          
  |+++++++++++++++++++++++++++++                     | 56% ~09s          
  |+++++++++++++++++++++++++++++                     | 57% ~09s          
  |++++++++++++++++++++++++++++++                    | 58% ~09s          
  |++++++++++++++++++++++++++++++                    | 59% ~09s          
  |+++++++++++++++++++++++++++++++                   | 60% ~08s          
  |+++++++++++++++++++++++++++++++                   | 61% ~08s          
  |++++++++++++++++++++++++++++++++                  | 62% ~08s          
  |++++++++++++++++++++++++++++++++                  | 64% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~07s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~07s          
  |++++++++++++++++++++++++++++++++++                | 67% ~07s          
  |++++++++++++++++++++++++++++++++++                | 68% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~06s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~06s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~05s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=20s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~12s          
  |++                                                | 3 % ~10s          
  |+++                                               | 5 % ~09s          
  |++++                                              | 7 % ~08s          
  |+++++                                             | 8 % ~08s          
  |+++++                                             | 10% ~08s          
  |++++++                                            | 11% ~08s          
  |+++++++                                           | 13% ~07s          
  |++++++++                                          | 15% ~07s          
  |+++++++++                                         | 16% ~07s          
  |++++++++++                                        | 18% ~07s          
  |++++++++++                                        | 20% ~07s          
  |+++++++++++                                       | 21% ~07s          
  |++++++++++++                                      | 23% ~07s          
  |+++++++++++++                                     | 25% ~06s          
  |++++++++++++++                                    | 26% ~06s          
  |++++++++++++++                                    | 28% ~06s          
  |+++++++++++++++                                   | 30% ~06s          
  |++++++++++++++++                                  | 31% ~06s          
  |+++++++++++++++++                                 | 33% ~06s          
  |++++++++++++++++++                                | 34% ~05s          
  |+++++++++++++++++++                               | 36% ~05s          
  |+++++++++++++++++++                               | 38% ~05s          
  |++++++++++++++++++++                              | 39% ~05s          
  |+++++++++++++++++++++                             | 41% ~05s          
  |++++++++++++++++++++++                            | 43% ~05s          
  |+++++++++++++++++++++++                           | 44% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 48% ~04s          
  |+++++++++++++++++++++++++                         | 49% ~04s          
  |++++++++++++++++++++++++++                        | 51% ~04s          
  |+++++++++++++++++++++++++++                       | 52% ~04s          
  |++++++++++++++++++++++++++++                      | 54% ~04s          
  |++++++++++++++++++++++++++++                      | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~03s          
  |++++++++++++++++++++++++++++++++                  | 64% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~13s          
  |++                                                | 2 % ~15s          
  |++                                                | 4 % ~15s          
  |+++                                               | 5 % ~14s          
  |++++                                              | 6 % ~14s          
  |++++                                              | 7 % ~14s          
  |+++++                                             | 9 % ~14s          
  |+++++                                             | 10% ~13s          
  |++++++                                            | 11% ~13s          
  |+++++++                                           | 12% ~13s          
  |+++++++                                           | 13% ~13s          
  |++++++++                                          | 15% ~12s          
  |++++++++                                          | 16% ~12s          
  |+++++++++                                         | 17% ~12s          
  |++++++++++                                        | 18% ~12s          
  |++++++++++                                        | 20% ~11s          
  |+++++++++++                                       | 21% ~11s          
  |+++++++++++                                       | 22% ~11s          
  |++++++++++++                                      | 23% ~11s          
  |+++++++++++++                                     | 24% ~11s          
  |+++++++++++++                                     | 26% ~11s          
  |++++++++++++++                                    | 27% ~10s          
  |+++++++++++++++                                   | 28% ~10s          
  |+++++++++++++++                                   | 29% ~10s          
  |++++++++++++++++                                  | 30% ~10s          
  |++++++++++++++++                                  | 32% ~10s          
  |+++++++++++++++++                                 | 33% ~09s          
  |++++++++++++++++++                                | 34% ~09s          
  |++++++++++++++++++                                | 35% ~09s          
  |+++++++++++++++++++                               | 37% ~09s          
  |+++++++++++++++++++                               | 38% ~09s          
  |++++++++++++++++++++                              | 39% ~09s          
  |+++++++++++++++++++++                             | 40% ~08s          
  |+++++++++++++++++++++                             | 41% ~08s          
  |++++++++++++++++++++++                            | 43% ~08s          
  |++++++++++++++++++++++                            | 44% ~08s          
  |+++++++++++++++++++++++                           | 45% ~08s          
  |++++++++++++++++++++++++                          | 46% ~08s          
  |++++++++++++++++++++++++                          | 48% ~07s          
  |+++++++++++++++++++++++++                         | 49% ~07s          
  |+++++++++++++++++++++++++                         | 50% ~07s          
  |++++++++++++++++++++++++++                        | 51% ~07s          
  |+++++++++++++++++++++++++++                       | 52% ~07s          
  |+++++++++++++++++++++++++++                       | 54% ~06s          
  |++++++++++++++++++++++++++++                      | 55% ~06s          
  |+++++++++++++++++++++++++++++                     | 56% ~06s          
  |+++++++++++++++++++++++++++++                     | 57% ~06s          
  |++++++++++++++++++++++++++++++                    | 59% ~06s          
  |++++++++++++++++++++++++++++++                    | 60% ~06s          
  |+++++++++++++++++++++++++++++++                   | 61% ~05s          
  |++++++++++++++++++++++++++++++++                  | 62% ~05s          
  |++++++++++++++++++++++++++++++++                  | 63% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~05s          
  |++++++++++++++++++++++++++++++++++                | 67% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=14s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~16s          
  |+                                                 | 2 % ~17s          
  |++                                                | 3 % ~16s          
  |++                                                | 4 % ~16s          
  |+++                                               | 5 % ~15s          
  |+++                                               | 6 % ~15s          
  |++++                                              | 7 % ~15s          
  |++++                                              | 8 % ~14s          
  |+++++                                             | 9 % ~14s          
  |+++++                                             | 10% ~14s          
  |++++++                                            | 11% ~14s          
  |++++++                                            | 12% ~14s          
  |+++++++                                           | 13% ~13s          
  |+++++++                                           | 14% ~13s          
  |++++++++                                          | 15% ~13s          
  |++++++++                                          | 16% ~13s          
  |+++++++++                                         | 17% ~13s          
  |+++++++++                                         | 18% ~13s          
  |++++++++++                                        | 19% ~13s          
  |++++++++++                                        | 20% ~12s          
  |+++++++++++                                       | 21% ~12s          
  |+++++++++++                                       | 22% ~12s          
  |++++++++++++                                      | 23% ~12s          
  |++++++++++++                                      | 24% ~12s          
  |+++++++++++++                                     | 25% ~11s          
  |+++++++++++++                                     | 26% ~11s          
  |++++++++++++++                                    | 27% ~11s          
  |++++++++++++++                                    | 28% ~11s          
  |+++++++++++++++                                   | 29% ~11s          
  |+++++++++++++++                                   | 30% ~11s          
  |++++++++++++++++                                  | 31% ~11s          
  |++++++++++++++++                                  | 32% ~10s          
  |+++++++++++++++++                                 | 33% ~10s          
  |+++++++++++++++++                                 | 34% ~10s          
  |++++++++++++++++++                                | 35% ~10s          
  |++++++++++++++++++                                | 36% ~10s          
  |+++++++++++++++++++                               | 37% ~10s          
  |+++++++++++++++++++                               | 38% ~10s          
  |++++++++++++++++++++                              | 39% ~10s          
  |++++++++++++++++++++                              | 40% ~09s          
  |+++++++++++++++++++++                             | 41% ~09s          
  |+++++++++++++++++++++                             | 42% ~09s          
  |++++++++++++++++++++++                            | 43% ~09s          
  |++++++++++++++++++++++                            | 44% ~09s          
  |+++++++++++++++++++++++                           | 45% ~09s          
  |+++++++++++++++++++++++                           | 46% ~08s          
  |++++++++++++++++++++++++                          | 47% ~08s          
  |++++++++++++++++++++++++                          | 48% ~08s          
  |+++++++++++++++++++++++++                         | 49% ~08s          
  |+++++++++++++++++++++++++                         | 50% ~08s          
  |++++++++++++++++++++++++++                        | 51% ~08s          
  |++++++++++++++++++++++++++                        | 52% ~08s          
  |+++++++++++++++++++++++++++                       | 53% ~07s          
  |+++++++++++++++++++++++++++                       | 54% ~07s          
  |++++++++++++++++++++++++++++                      | 55% ~07s          
  |++++++++++++++++++++++++++++                      | 56% ~07s          
  |+++++++++++++++++++++++++++++                     | 57% ~07s          
  |+++++++++++++++++++++++++++++                     | 58% ~07s          
  |++++++++++++++++++++++++++++++                    | 59% ~06s          
  |++++++++++++++++++++++++++++++                    | 60% ~06s          
  |+++++++++++++++++++++++++++++++                   | 61% ~06s          
  |+++++++++++++++++++++++++++++++                   | 62% ~06s          
  |++++++++++++++++++++++++++++++++                  | 63% ~06s          
  |++++++++++++++++++++++++++++++++                  | 64% ~06s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~06s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~05s          
  |++++++++++++++++++++++++++++++++++                | 67% ~05s          
  |++++++++++++++++++++++++++++++++++                | 68% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~05s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~05s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~04s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~04s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=16s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~27s          
  |++                                                | 2 % ~27s          
  |++                                                | 3 % ~27s          
  |+++                                               | 4 % ~26s          
  |+++                                               | 5 % ~25s          
  |++++                                              | 6 % ~25s          
  |++++                                              | 7 % ~25s          
  |+++++                                             | 8 % ~24s          
  |+++++                                             | 9 % ~24s          
  |++++++                                            | 10% ~24s          
  |++++++                                            | 11% ~23s          
  |+++++++                                           | 12% ~23s          
  |+++++++                                           | 14% ~23s          
  |++++++++                                          | 15% ~22s          
  |++++++++                                          | 16% ~22s          
  |+++++++++                                         | 17% ~22s          
  |+++++++++                                         | 18% ~21s          
  |++++++++++                                        | 19% ~21s          
  |++++++++++                                        | 20% ~21s          
  |+++++++++++                                       | 21% ~21s          
  |+++++++++++                                       | 22% ~20s          
  |++++++++++++                                      | 23% ~20s          
  |++++++++++++                                      | 24% ~20s          
  |+++++++++++++                                     | 25% ~20s          
  |++++++++++++++                                    | 26% ~19s          
  |++++++++++++++                                    | 27% ~19s          
  |+++++++++++++++                                   | 28% ~19s          
  |+++++++++++++++                                   | 29% ~18s          
  |++++++++++++++++                                  | 30% ~18s          
  |++++++++++++++++                                  | 31% ~18s          
  |+++++++++++++++++                                 | 32% ~17s          
  |+++++++++++++++++                                 | 33% ~17s          
  |++++++++++++++++++                                | 34% ~17s          
  |++++++++++++++++++                                | 35% ~17s          
  |+++++++++++++++++++                               | 36% ~16s          
  |+++++++++++++++++++                               | 38% ~16s          
  |++++++++++++++++++++                              | 39% ~16s          
  |++++++++++++++++++++                              | 40% ~16s          
  |+++++++++++++++++++++                             | 41% ~15s          
  |+++++++++++++++++++++                             | 42% ~15s          
  |++++++++++++++++++++++                            | 43% ~15s          
  |++++++++++++++++++++++                            | 44% ~15s          
  |+++++++++++++++++++++++                           | 45% ~14s          
  |+++++++++++++++++++++++                           | 46% ~14s          
  |++++++++++++++++++++++++                          | 47% ~14s          
  |++++++++++++++++++++++++                          | 48% ~13s          
  |+++++++++++++++++++++++++                         | 49% ~13s          
  |+++++++++++++++++++++++++                         | 50% ~13s          
  |++++++++++++++++++++++++++                        | 51% ~13s          
  |+++++++++++++++++++++++++++                       | 52% ~12s          
  |+++++++++++++++++++++++++++                       | 53% ~12s          
  |++++++++++++++++++++++++++++                      | 54% ~12s          
  |++++++++++++++++++++++++++++                      | 55% ~12s          
  |+++++++++++++++++++++++++++++                     | 56% ~11s          
  |+++++++++++++++++++++++++++++                     | 57% ~11s          
  |++++++++++++++++++++++++++++++                    | 58% ~11s          
  |++++++++++++++++++++++++++++++                    | 59% ~10s          
  |+++++++++++++++++++++++++++++++                   | 60% ~10s          
  |+++++++++++++++++++++++++++++++                   | 61% ~10s          
  |++++++++++++++++++++++++++++++++                  | 62% ~10s          
  |++++++++++++++++++++++++++++++++                  | 64% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~09s          
  |++++++++++++++++++++++++++++++++++                | 67% ~09s          
  |++++++++++++++++++++++++++++++++++                | 68% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~08s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~08s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~07s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~06s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~06s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=26s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~01m 06s      
  |++                                                | 2 % ~01m 08s      
  |++                                                | 3 % ~01m 14s      
  |+++                                               | 4 % ~01m 17s      
  |+++                                               | 5 % ~01m 18s      
  |++++                                              | 6 % ~01m 18s      
  |++++                                              | 7 % ~01m 18s      
  |+++++                                             | 8 % ~01m 17s      
  |+++++                                             | 9 % ~01m 16s      
  |++++++                                            | 10% ~01m 15s      
  |++++++                                            | 11% ~01m 12s      
  |+++++++                                           | 12% ~01m 12s      
  |+++++++                                           | 13% ~01m 12s      
  |++++++++                                          | 14% ~01m 09s      
  |++++++++                                          | 15% ~01m 08s      
  |+++++++++                                         | 16% ~01m 06s      
  |+++++++++                                         | 18% ~01m 04s      
  |++++++++++                                        | 19% ~01m 03s      
  |++++++++++                                        | 20% ~01m 02s      
  |+++++++++++                                       | 21% ~01m 00s      
  |+++++++++++                                       | 22% ~59s          
  |++++++++++++                                      | 23% ~57s          
  |++++++++++++                                      | 24% ~57s          
  |+++++++++++++                                     | 25% ~56s          
  |+++++++++++++                                     | 26% ~55s          
  |++++++++++++++                                    | 27% ~54s          
  |++++++++++++++                                    | 28% ~53s          
  |+++++++++++++++                                   | 29% ~52s          
  |+++++++++++++++                                   | 30% ~51s          
  |++++++++++++++++                                  | 31% ~50s          
  |++++++++++++++++                                  | 32% ~49s          
  |+++++++++++++++++                                 | 33% ~48s          
  |++++++++++++++++++                                | 34% ~47s          
  |++++++++++++++++++                                | 35% ~46s          
  |+++++++++++++++++++                               | 36% ~45s          
  |+++++++++++++++++++                               | 37% ~44s          
  |++++++++++++++++++++                              | 38% ~44s          
  |++++++++++++++++++++                              | 39% ~43s          
  |+++++++++++++++++++++                             | 40% ~42s          
  |+++++++++++++++++++++                             | 41% ~41s          
  |++++++++++++++++++++++                            | 42% ~40s          
  |++++++++++++++++++++++                            | 43% ~39s          
  |+++++++++++++++++++++++                           | 44% ~38s          
  |+++++++++++++++++++++++                           | 45% ~38s          
  |++++++++++++++++++++++++                          | 46% ~37s          
  |++++++++++++++++++++++++                          | 47% ~36s          
  |+++++++++++++++++++++++++                         | 48% ~35s          
  |+++++++++++++++++++++++++                         | 49% ~34s          
  |++++++++++++++++++++++++++                        | 51% ~34s          
  |++++++++++++++++++++++++++                        | 52% ~33s          
  |+++++++++++++++++++++++++++                       | 53% ~32s          
  |+++++++++++++++++++++++++++                       | 54% ~31s          
  |++++++++++++++++++++++++++++                      | 55% ~30s          
  |++++++++++++++++++++++++++++                      | 56% ~30s          
  |+++++++++++++++++++++++++++++                     | 57% ~29s          
  |+++++++++++++++++++++++++++++                     | 58% ~28s          
  |++++++++++++++++++++++++++++++                    | 59% ~27s          
  |++++++++++++++++++++++++++++++                    | 60% ~27s          
  |+++++++++++++++++++++++++++++++                   | 61% ~26s          
  |+++++++++++++++++++++++++++++++                   | 62% ~25s          
  |++++++++++++++++++++++++++++++++                  | 63% ~25s          
  |++++++++++++++++++++++++++++++++                  | 64% ~24s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~23s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~22s          
  |++++++++++++++++++++++++++++++++++                | 67% ~22s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~21s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~20s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~20s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~19s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~18s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~18s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~17s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~16s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~15s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~15s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~14s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~13s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~13s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~12s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~11s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~11s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~10s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~09s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~09s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~08s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~07s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~07s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01m 05s
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~31s          
  |++                                                | 2 % ~31s          
  |++                                                | 3 % ~31s          
  |+++                                               | 4 % ~30s          
  |+++                                               | 5 % ~30s          
  |++++                                              | 6 % ~29s          
  |++++                                              | 7 % ~29s          
  |+++++                                             | 8 % ~29s          
  |+++++                                             | 9 % ~29s          
  |++++++                                            | 11% ~29s          
  |++++++                                            | 12% ~28s          
  |+++++++                                           | 13% ~28s          
  |+++++++                                           | 14% ~28s          
  |++++++++                                          | 15% ~27s          
  |++++++++                                          | 16% ~27s          
  |+++++++++                                         | 17% ~27s          
  |+++++++++                                         | 18% ~26s          
  |++++++++++                                        | 19% ~26s          
  |++++++++++                                        | 20% ~25s          
  |+++++++++++                                       | 21% ~25s          
  |++++++++++++                                      | 22% ~25s          
  |++++++++++++                                      | 23% ~24s          
  |+++++++++++++                                     | 24% ~24s          
  |+++++++++++++                                     | 25% ~24s          
  |++++++++++++++                                    | 26% ~23s          
  |++++++++++++++                                    | 27% ~23s          
  |+++++++++++++++                                   | 28% ~22s          
  |+++++++++++++++                                   | 29% ~22s          
  |++++++++++++++++                                  | 31% ~22s          
  |++++++++++++++++                                  | 32% ~21s          
  |+++++++++++++++++                                 | 33% ~21s          
  |+++++++++++++++++                                 | 34% ~21s          
  |++++++++++++++++++                                | 35% ~21s          
  |++++++++++++++++++                                | 36% ~20s          
  |+++++++++++++++++++                               | 37% ~20s          
  |+++++++++++++++++++                               | 38% ~20s          
  |++++++++++++++++++++                              | 39% ~20s          
  |++++++++++++++++++++                              | 40% ~19s          
  |+++++++++++++++++++++                             | 41% ~19s          
  |++++++++++++++++++++++                            | 42% ~19s          
  |++++++++++++++++++++++                            | 43% ~18s          
  |+++++++++++++++++++++++                           | 44% ~18s          
  |+++++++++++++++++++++++                           | 45% ~18s          
  |++++++++++++++++++++++++                          | 46% ~18s          
  |++++++++++++++++++++++++                          | 47% ~17s          
  |+++++++++++++++++++++++++                         | 48% ~17s          
  |+++++++++++++++++++++++++                         | 49% ~16s          
  |++++++++++++++++++++++++++                        | 51% ~16s          
  |++++++++++++++++++++++++++                        | 52% ~16s          
  |+++++++++++++++++++++++++++                       | 53% ~15s          
  |+++++++++++++++++++++++++++                       | 54% ~15s          
  |++++++++++++++++++++++++++++                      | 55% ~15s          
  |++++++++++++++++++++++++++++                      | 56% ~14s          
  |+++++++++++++++++++++++++++++                     | 57% ~14s          
  |+++++++++++++++++++++++++++++                     | 58% ~14s          
  |++++++++++++++++++++++++++++++                    | 59% ~13s          
  |++++++++++++++++++++++++++++++                    | 60% ~13s          
  |+++++++++++++++++++++++++++++++                   | 61% ~13s          
  |++++++++++++++++++++++++++++++++                  | 62% ~12s          
  |++++++++++++++++++++++++++++++++                  | 63% ~12s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~12s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~11s          
  |++++++++++++++++++++++++++++++++++                | 66% ~11s          
  |++++++++++++++++++++++++++++++++++                | 67% ~11s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~10s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~10s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~10s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~09s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~09s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~09s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~08s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~08s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~08s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~07s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~07s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~07s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=32s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~06s          
  |++                                                | 3 % ~06s          
  |+++                                               | 5 % ~06s          
  |++++                                              | 6 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~06s          
  |+++++++++                                         | 18% ~06s          
  |++++++++++                                        | 19% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |+++++++++++++                                     | 24% ~05s          
  |+++++++++++++                                     | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |+++++++++++++++++                                 | 32% ~05s          
  |+++++++++++++++++                                 | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 42% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~04s          
  |+++++++++++++++++++++++++                         | 50% ~04s          
  |++++++++++++++++++++++++++                        | 52% ~04s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |++++++++++++++++++++++++++++++                    | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~03s          
  |++++++++++++++++++++++++++++++++++                | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=08s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~23s          
  |++                                                | 2 % ~25s          
  |++                                                | 3 % ~26s          
  |+++                                               | 4 % ~25s          
  |+++                                               | 5 % ~25s          
  |++++                                              | 6 % ~24s          
  |++++                                              | 7 % ~23s          
  |+++++                                             | 9 % ~23s          
  |+++++                                             | 10% ~22s          
  |++++++                                            | 11% ~22s          
  |++++++                                            | 12% ~22s          
  |+++++++                                           | 13% ~21s          
  |+++++++                                           | 14% ~21s          
  |++++++++                                          | 15% ~20s          
  |++++++++                                          | 16% ~20s          
  |+++++++++                                         | 17% ~20s          
  |++++++++++                                        | 18% ~20s          
  |++++++++++                                        | 19% ~19s          
  |+++++++++++                                       | 20% ~19s          
  |+++++++++++                                       | 21% ~19s          
  |++++++++++++                                      | 22% ~18s          
  |++++++++++++                                      | 23% ~18s          
  |+++++++++++++                                     | 24% ~18s          
  |+++++++++++++                                     | 26% ~18s          
  |++++++++++++++                                    | 27% ~18s          
  |++++++++++++++                                    | 28% ~18s          
  |+++++++++++++++                                   | 29% ~18s          
  |+++++++++++++++                                   | 30% ~17s          
  |++++++++++++++++                                  | 31% ~17s          
  |++++++++++++++++                                  | 32% ~17s          
  |+++++++++++++++++                                 | 33% ~16s          
  |++++++++++++++++++                                | 34% ~16s          
  |++++++++++++++++++                                | 35% ~16s          
  |+++++++++++++++++++                               | 36% ~16s          
  |+++++++++++++++++++                               | 37% ~15s          
  |++++++++++++++++++++                              | 38% ~15s          
  |++++++++++++++++++++                              | 39% ~15s          
  |+++++++++++++++++++++                             | 40% ~15s          
  |+++++++++++++++++++++                             | 41% ~14s          
  |++++++++++++++++++++++                            | 43% ~14s          
  |++++++++++++++++++++++                            | 44% ~14s          
  |+++++++++++++++++++++++                           | 45% ~13s          
  |+++++++++++++++++++++++                           | 46% ~13s          
  |++++++++++++++++++++++++                          | 47% ~13s          
  |++++++++++++++++++++++++                          | 48% ~13s          
  |+++++++++++++++++++++++++                         | 49% ~12s          
  |+++++++++++++++++++++++++                         | 50% ~12s          
  |++++++++++++++++++++++++++                        | 51% ~12s          
  |+++++++++++++++++++++++++++                       | 52% ~11s          
  |+++++++++++++++++++++++++++                       | 53% ~11s          
  |++++++++++++++++++++++++++++                      | 54% ~11s          
  |++++++++++++++++++++++++++++                      | 55% ~11s          
  |+++++++++++++++++++++++++++++                     | 56% ~10s          
  |+++++++++++++++++++++++++++++                     | 57% ~10s          
  |++++++++++++++++++++++++++++++                    | 59% ~10s          
  |++++++++++++++++++++++++++++++                    | 60% ~10s          
  |+++++++++++++++++++++++++++++++                   | 61% ~09s          
  |+++++++++++++++++++++++++++++++                   | 62% ~09s          
  |++++++++++++++++++++++++++++++++                  | 63% ~09s          
  |++++++++++++++++++++++++++++++++                  | 64% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~08s          
  |++++++++++++++++++++++++++++++++++                | 67% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=24s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~22s          
  |++                                                | 2 % ~21s          
  |++                                                | 3 % ~22s          
  |+++                                               | 4 % ~21s          
  |+++                                               | 6 % ~21s          
  |++++                                              | 7 % ~20s          
  |++++                                              | 8 % ~19s          
  |+++++                                             | 9 % ~19s          
  |+++++                                             | 10% ~19s          
  |++++++                                            | 11% ~18s          
  |+++++++                                           | 12% ~18s          
  |+++++++                                           | 13% ~17s          
  |++++++++                                          | 14% ~17s          
  |++++++++                                          | 16% ~17s          
  |+++++++++                                         | 17% ~17s          
  |+++++++++                                         | 18% ~17s          
  |++++++++++                                        | 19% ~17s          
  |++++++++++                                        | 20% ~17s          
  |+++++++++++                                       | 21% ~16s          
  |++++++++++++                                      | 22% ~16s          
  |++++++++++++                                      | 23% ~16s          
  |+++++++++++++                                     | 24% ~16s          
  |+++++++++++++                                     | 26% ~15s          
  |++++++++++++++                                    | 27% ~15s          
  |++++++++++++++                                    | 28% ~15s          
  |+++++++++++++++                                   | 29% ~14s          
  |+++++++++++++++                                   | 30% ~14s          
  |++++++++++++++++                                  | 31% ~14s          
  |+++++++++++++++++                                 | 32% ~14s          
  |+++++++++++++++++                                 | 33% ~13s          
  |++++++++++++++++++                                | 34% ~13s          
  |++++++++++++++++++                                | 36% ~13s          
  |+++++++++++++++++++                               | 37% ~13s          
  |+++++++++++++++++++                               | 38% ~13s          
  |++++++++++++++++++++                              | 39% ~12s          
  |++++++++++++++++++++                              | 40% ~12s          
  |+++++++++++++++++++++                             | 41% ~12s          
  |++++++++++++++++++++++                            | 42% ~12s          
  |++++++++++++++++++++++                            | 43% ~11s          
  |+++++++++++++++++++++++                           | 44% ~11s          
  |+++++++++++++++++++++++                           | 46% ~11s          
  |++++++++++++++++++++++++                          | 47% ~11s          
  |++++++++++++++++++++++++                          | 48% ~11s          
  |+++++++++++++++++++++++++                         | 49% ~10s          
  |+++++++++++++++++++++++++                         | 50% ~10s          
  |++++++++++++++++++++++++++                        | 51% ~10s          
  |+++++++++++++++++++++++++++                       | 52% ~10s          
  |+++++++++++++++++++++++++++                       | 53% ~09s          
  |++++++++++++++++++++++++++++                      | 54% ~09s          
  |++++++++++++++++++++++++++++                      | 56% ~09s          
  |+++++++++++++++++++++++++++++                     | 57% ~09s          
  |+++++++++++++++++++++++++++++                     | 58% ~08s          
  |++++++++++++++++++++++++++++++                    | 59% ~08s          
  |++++++++++++++++++++++++++++++                    | 60% ~08s          
  |+++++++++++++++++++++++++++++++                   | 61% ~08s          
  |++++++++++++++++++++++++++++++++                  | 62% ~08s          
  |++++++++++++++++++++++++++++++++                  | 63% ~07s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~07s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~07s          
  |++++++++++++++++++++++++++++++++++                | 67% ~07s          
  |++++++++++++++++++++++++++++++++++                | 68% ~06s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~06s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~06s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~05s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~05s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~04s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~04s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=20s  

Have a look at the top cluster markers

head(ClusterMarkers)
top5 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=5, wt =avg_log2FC)

top2 <- ClusterMarkers %>% group_by(cluster) %>% top_n(n=2, wt =avg_log2FC)
DoHeatmap(seu, features = top5$gene, size = 3, angle = 90, group.by = "RNA_snn_res.0.6")
Warning in DoHeatmap(seu, features = top5$gene, size = 3, angle = 90, group.by = "RNA_snn_res.0.6") :
  The following features were omitted as they were not found in the scale.data slot for the RNA assay: MTRNR2L12

DoHeatmap(seu, features = top2$gene, size = 3, angle = 90, group.by = "RNA_snn_res.0.6")

Now use EnrichR to check cell type libraries

setEnrichrSite("Enrichr") # Human genes
Connection changed to https://maayanlab.cloud/Enrichr/
Connection is Live!
# list of all the databases
# get the possible libraries
dbs <- listEnrichrDbs()

# this will list the possible libraries
dbs

# select libraries with cell types
db <- c('CellMarker_Augmented_2021','Azimuth_Cell_Types_2021')

# function for a quick look
checkCelltypes <- function(cluster_num = 0){
  clusterX <- ClusterMarkers %>% filter(cluster == cluster_num & avg_log2FC > 0.25)
  genes <- clusterX$gene
  # the cell type libraries
  # get the results for each library
  clusterX.cell <- enrichr(genes, databases = db)
  # visualize the results
print(plotEnrich(clusterX.cell[[1]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value", title = 'CellMarker_Augmented_2021'))
print(plotEnrich(clusterX.cell[[2]], showTerms = 20, numChar = 40, y = "Count", orderBy = "P.value", title = 'Azimuth_Cell_Types_2021'))

}

Check each cluster

cluster0 <- checkCelltypes(cluster_num = 0)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster1 <- checkCelltypes(cluster_num = 1)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster2 <- checkCelltypes(cluster_num = 2)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster3 <- checkCelltypes(cluster_num = 3)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster4 <- checkCelltypes(cluster_num = 4)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster5 <- checkCelltypes(cluster_num = 5)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster6 <- checkCelltypes(cluster_num = 6)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster7 <- checkCelltypes(cluster_num = 7)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster8 <- checkCelltypes(cluster_num = 8)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

cluster9 <- checkCelltypes(cluster_num = 9)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

Add cell type annotations

# we need to set the identity to rename
Idents(seu) <- "RNA_snn_res.0.6"

# we need to make a vector of the cell type in the same order - in the cluster order

cell_types <- c("NPC-pluri", "NPC","NPC",
                 "glia","glia","Neuron",
                 "glia-APOE","NPC-mixed","NPC",
                 "NPC-TNC")
names(cell_types) <- levels(seu)

seu <- RenameIdents(seu, cell_types)
seu <- AddMetaData(object=seu, metadata=Idents(seu), col.name = "CellTypes")

DimPlot(seu, label = TRUE)


Idents(seu) <- "RNA_snn_res.0.6"
cell_types <- c("NPC-pluri", "NPC1","NPC2",
                 "glia1","glia2","Neuron",
                 "glia3","NPC-mixed","NPC-div",
                 "NPC-TNC")
names(cell_types) <- levels(seu)
seu <- RenameIdents(seu, cell_types)
seu <- AddMetaData(object=seu, metadata=Idents(seu), col.name = "Celltypes1")

DimPlot(seu, label = TRUE)

NA
NA

See cell counts for each line and cell type

VlnPlot(seu, features = "nFeature_RNA", group.by = "souporcell_assignment")


Idents(seu)<- "CellTypes"
DimPlot(seu, group.by = "souporcell_assignment", label = TRUE)

We might need to separate and harmonize each cell type.

# make a list of seurat objects by our cell type variable
sublist <- SplitObject(seu, split.by = "souporcell_assignment")
# normalize and find variable features
for (i in 1:length(sublist)){
  sublist[[i]] <- NormalizeData(sublist[[i]], verbose = FALSE)
  sublist[[i]] <- FindVariableFeatures(sublist[[i]], selection.method = "vst")
}
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
# Create an empty Seurat object to store the integrated data
# Take the first Seurat object from the list as the starting point
integrated_seurat <- subset(sublist[[1]])


# Iterate over the list of Seurat objects
for (i in 1:length(sublist)) {
  # Rename the 'orig.ident' metadata inside the seurat object to match the object name in the list
  sublist[[i]]$orig.ident <- names(sublist)[i]

}

sample.list <- sublist
for (i in 1:length(sample.list)) {
  # Normalize and scale the data
  sample.list[[i]] <- NormalizeData(sample.list[[i]], verbose = FALSE)
  sample.list[[i]] <- ScaleData(sample.list[[i]], verbose = FALSE)
  # Find variable features
  sample.list[[i]] <- FindVariableFeatures(sample.list[[i]], selection.method = "vst")
  # Get the variable features
  variable_features <- VariableFeatures(sample.list[[i]])
  # Run PCA with the variable features
  sample.list[[i]] <- RunPCA(sample.list[[i]], verbose = FALSE, npcs = 30, features = variable_features)
}
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
int.anchors <- FindIntegrationAnchors(object.list = sample.list, dims = 1:30, reduction = "rpca")
Computing 2000 integration features
Scaling features for provided objects

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~08s          
  |++++++++                                          | 15% ~04s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
Computing within dataset neighborhoods

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~09s          
  |++++++++                                          | 15% ~06s          
  |++++++++++++                                      | 23% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Finding all pairwise anchors

  |                                                  | 0 % ~calculating  
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 913 anchors

  |+                                                 | 1 % ~04m 16s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 1393 anchors

  |++                                                | 3 % ~04m 54s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 995 anchors

  |++                                                | 4 % ~04m 18s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 777 anchors

  |+++                                               | 5 % ~04m 20s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 838 anchors

  |++++                                              | 6 % ~03m 58s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 1046 anchors

  |++++                                              | 8 % ~03m 50s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 287 anchors

  |+++++                                             | 9 % ~03m 36s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 356 anchors

  |++++++                                            | 10% ~03m 17s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 410 anchors

  |++++++                                            | 12% ~03m 07s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 674 anchors

  |+++++++                                           | 13% ~02m 58s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 1419 anchors

  |++++++++                                          | 14% ~02m 56s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 939 anchors

  |++++++++                                          | 15% ~02m 49s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 1154 anchors

  |+++++++++                                         | 17% ~02m 44s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 709 anchors

  |+++++++++                                         | 18% ~02m 41s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 354 anchors

  |++++++++++                                        | 19% ~02m 34s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 651 anchors

  |+++++++++++                                       | 21% ~02m 33s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 594 anchors

  |+++++++++++                                       | 22% ~02m 28s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 639 anchors

  |++++++++++++                                      | 23% ~02m 25s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 804 anchors

  |+++++++++++++                                     | 24% ~02m 23s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 354 anchors

  |+++++++++++++                                     | 26% ~02m 18s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 506 anchors

  |++++++++++++++                                    | 27% ~02m 14s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 520 anchors

  |+++++++++++++++                                   | 28% ~02m 11s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 577 anchors

  |+++++++++++++++                                   | 29% ~02m 07s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 514 anchors

  |++++++++++++++++                                  | 31% ~02m 04s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 833 anchors

  |+++++++++++++++++                                 | 32% ~02m 01s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 379 anchors

  |+++++++++++++++++                                 | 33% ~01m 57s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 480 anchors

  |++++++++++++++++++                                | 35% ~01m 53s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 806 anchors

  |++++++++++++++++++                                | 36% ~01m 50s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 171 anchors

  |+++++++++++++++++++                               | 37% ~01m 47s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 205 anchors

  |++++++++++++++++++++                              | 38% ~01m 43s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 238 anchors

  |++++++++++++++++++++                              | 40% ~01m 40s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 275 anchors

  |+++++++++++++++++++++                             | 41% ~01m 38s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 248 anchors

  |++++++++++++++++++++++                            | 42% ~01m 34s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 199 anchors

  |++++++++++++++++++++++                            | 44% ~01m 31s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 217 anchors

  |+++++++++++++++++++++++                           | 45% ~01m 28s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 251 anchors

  |++++++++++++++++++++++++                          | 46% ~01m 25s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 593 anchors

  |++++++++++++++++++++++++                          | 47% ~01m 24s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 617 anchors

  |+++++++++++++++++++++++++                         | 49% ~01m 21s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 662 anchors

  |+++++++++++++++++++++++++                         | 50% ~01m 19s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 660 anchors

  |++++++++++++++++++++++++++                        | 51% ~01m 18s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 350 anchors

  |+++++++++++++++++++++++++++                       | 53% ~01m 15s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 613 anchors

  |+++++++++++++++++++++++++++                       | 54% ~01m 13s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 795 anchors

  |++++++++++++++++++++++++++++                      | 55% ~01m 11s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 581 anchors

  |+++++++++++++++++++++++++++++                     | 56% ~01m 08s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 227 anchors

  |+++++++++++++++++++++++++++++                     | 58% ~01m 05s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 499 anchors

  |++++++++++++++++++++++++++++++                    | 59% ~01m 04s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 505 anchors

  |+++++++++++++++++++++++++++++++                   | 60% ~01m 01s      
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 528 anchors

  |+++++++++++++++++++++++++++++++                   | 62% ~60s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 494 anchors

  |++++++++++++++++++++++++++++++++                  | 63% ~58s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 289 anchors

  |+++++++++++++++++++++++++++++++++                 | 64% ~55s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 538 anchors

  |+++++++++++++++++++++++++++++++++                 | 65% ~53s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 399 anchors

  |++++++++++++++++++++++++++++++++++                | 67% ~51s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 399 anchors

  |++++++++++++++++++++++++++++++++++                | 68% ~48s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 169 anchors

  |+++++++++++++++++++++++++++++++++++               | 69% ~46s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 406 anchors

  |++++++++++++++++++++++++++++++++++++              | 71% ~44s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 408 anchors

  |++++++++++++++++++++++++++++++++++++              | 72% ~42s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 422 anchors

  |+++++++++++++++++++++++++++++++++++++             | 73% ~40s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 518 anchors

  |++++++++++++++++++++++++++++++++++++++            | 74% ~38s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 542 anchors

  |++++++++++++++++++++++++++++++++++++++            | 76% ~36s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 307 anchors

  |+++++++++++++++++++++++++++++++++++++++           | 77% ~34s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 474 anchors

  |++++++++++++++++++++++++++++++++++++++++          | 78% ~32s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 452 anchors

  |++++++++++++++++++++++++++++++++++++++++          | 79% ~30s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 405 anchors

  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~28s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 197 anchors

  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~26s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 611 anchors

  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~24s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 389 anchors

  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~22s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 186 anchors

  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~20s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 198 anchors

  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~18s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 187 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~16s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 243 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~15s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 221 anchors

  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~13s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 184 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~11s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 180 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~09s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 202 anchors

  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~07s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 169 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~05s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 188 anchors

  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 172 anchors

  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
Projecting new data onto SVD
Projecting new data onto SVD
Finding neighborhoods
Finding anchors
    Found 160 anchors

  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 16s
integrated_seurat <- IntegrateData(anchorset = int.anchors,  dims = 1:30, k.weight = 72)
Merging dataset 5 into 4
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 12 into 10
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 8 into 7
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 9 into 4 5
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 11 into 6
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 6 11 into 1
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 13 into 2
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 2 13 into 3
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 10 12 into 7 8
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 3 2 13 into 1 6 11
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 4 5 9 into 7 8 10 12
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
Merging dataset 7 8 10 12 4 5 9 into 1 6 11 3 2 13
Extracting anchors for merged samples
Finding integration vectors
Finding integration vector weights
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Integrating data
# the k value is the problem
# must set the k weight to the lowest cell count

Save so far

saveRDS(seu, "/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/seu_ann_June28.RDS")
saveRDS(integrated_seurat, "/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/Integr_seu_ann_June28.RDS")
DimPlot(seu, group.by = "souporcell_assignment", split.by = "CellTypes")

DimPlot(integrated_seurat, group.by = "CellTypes")

NA
NA

DimPlot(integrated_seurat, group.by = "souporcell_assignment", split.by = "CellTypes")

NA
NA

integrated_seurat <- FindNeighbors(integrated_seurat, dims = 1:20, k.param = 81)
Computing nearest neighbor graph
Computing SNN
integrated_seurat <- FindClusters(integrated_seurat, resolution = c(0.6,1) )
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2251770

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8726
Number of communities: 13
Elapsed time: 8 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14643
Number of edges: 2251770

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8358
Number of communities: 17
Elapsed time: 10 seconds
DimPlot(integrated_seurat, group.by = "orig.ident")

#much better integration
#integrated_seurat$integrated_snn_res.0.6
DimPlot(integrated_seurat, group.by = "integrated_snn_res.0.6", label=TRUE)

DimPlot(integrated_seurat, group.by = "integrated_snn_res.1", label = TRUE)

Now cells per cluster

table(integrated_seurat$integrated_snn_res.0.6, integrated_seurat$orig.ident)
    
       0   1  10  11  12   2   3   4   5   6   7   8   9
  0   94 215  67 587 474  38 232  12  15  41 185 125 356
  1  187 114  67 511 290   7 414   6  18  33 178  53 200
  2  161 290  41   5 553  28  46  31  83 150  52 105 287
  3  140 111  52 417 302  16 281  11  31  34 138  75 145
  4  202  19  48 640  63  21 241  16  23  17 246  29  16
  5   72  82  39 315 201   1 240   1  12  24 100  36 126
  6   77  64  12 295 151  17 309   5  10  16  81  64 127
  7   72  44  29 134  56  58  86  76  54  20  52  26  43
  8   13  39  22  40 106   6  56  11  26  22  38  26  43
  9   59  11  25  35  25   0 143   0   5  11  64   4   9
  10  33  22  15 101  62   7  26   2  10   8  43  22  30
  11   1   0   0   3  64   0 187   5   4   0   0   0   1
  12   7   3   0   5  84   2   8   8  14   0   2  19  94
table(integrated_seurat$integrated_snn_res.1, integrated_seurat$orig.ident)
    
       0   1  10  11  12   2   3   4   5   6   7   8   9
  0  186 112  65 506 286   6 413   5  17  31 175  51 193
  1  141 110  52 417 300  16 276  10  30  34 138  75 145
  2   91  74  60 579 244  31 216   5   8  19 180  92 111
  3   73  80  40 316 201   1 237   1  12  24  98  36 127
  4   77  64  12 295 151  18 303   4   9  15  81  63 127
  5  138 218  23   1 125   9  28  17  23  66  48  81 214
  6   80   6  22 307  37  11 129  13  13  11 148  17   6
  7  122  13  26 336  26   9 116   3  10   6  99  13  10
  8   73  46  29 135  58  63  86  80  54  20  52  27  50
  9    1 146   4   4 241   2   8   4   7  26   5  31 248
  10   9  25  16   0 344  16  18   9  45  71   2  12  29
  11  14  43  23  40 108   6  57  11  28  23  39  26  45
  12  59  11  26  36  25   0 146   0   5  11  65   4   9
  13  33  22  15 103  62   7  26   2  10   8  43  22  31
  14   1   0   0   3  64   1 198   5   4   0   0   0   1
  15   7   3   0   5  85   2   8   8  14   0   2  20  95
  16  13  41   4   5  74   3   4   7  16  11   4  14  36

Which cells match to which subject?

From Michaels correlation:

code.tb <- read.table(file = "/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/Genotype_ID_key.txt", 
header = TRUE, sep = "\t")

class(code.tb)
[1] "data.frame"
seu <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/IntegratedSeuratGraphsJune28.RDS")
Warning in gzfile(file, "rb") :
  cannot open compressed file '/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/IntegratedSeuratGraphsJune28.RDS', probable reason 'No such file or directory'
Error in gzfile(file, "rb") : cannot open the connection

# add the assigned lines into the seurat object
# Assuming your data frame is named 'lookup_df' and has columns 'Genotype_ID' and 'Cluster_ID'
lookup_table <- code.tb[, c("Cluster_ID", "Genotype_ID")]
# add the a new metadata slot
seu$Genotype_ID <- lookup_table$Genotype_ID[match(seu$souporcell_assignment, lookup_table$Cluster_ID)]


seu$Genotype_ID <- ifelse(
  seu$souporcell_assignment %in% lookup_table$Cluster_ID,
  lookup_table$Genotype_ID[match(seu$souporcell_assignment, lookup_table$Cluster_ID)],
  "unassigned"
)



unique(seu$Genotype_ID)
 [1] "28_CH79DIVUZHD100462"          "22_CH47DIVUZHD100456"         
 [3] "4_CH96GSAUZHD100576"           "19_CH31DIVUZHD100453"         
 [5] "unassigned"                    "29_CH52DIVUZHD100463"         
 [7] "saliva_mr-023__saliva_mr-023_" "23_CH20DIVUZHD100457"         
 [9] "32_CH97GSAUZHD100946"          "3_CH26GSAUZHD100575"          

Add genotype to intergrated object

lookup_table <- code.tb[, c("Cluster_ID", "Genotype_ID")]
# add the a new metadata slot
integrated_seurat$Genotype_ID <- lookup_table$Genotype_ID[match(integrated_seurat$souporcell_assignment, lookup_table$Cluster_ID)]


integrated_seurat$Genotype_ID <- ifelse(
  integrated_seurat$souporcell_assignment %in% lookup_table$Cluster_ID,
  lookup_table$Genotype_ID[match(integrated_seurat$souporcell_assignment, lookup_table$Cluster_ID)],
  "unassigned"
)



unique(integrated_seurat$Genotype_ID)
 [1] "28_CH79DIVUZHD100462"          "22_CH47DIVUZHD100456"         
 [3] "4_CH96GSAUZHD100576"           "19_CH31DIVUZHD100453"         
 [5] "unassigned"                    "29_CH52DIVUZHD100463"         
 [7] "saliva_mr-023__saliva_mr-023_" "23_CH20DIVUZHD100457"         
 [9] "32_CH97GSAUZHD100946"          "3_CH26GSAUZHD100575"          

Integrated object annotations

table(integrated_seurat$CellTypes, integrated_seurat$integrated_snn_res.0.6)
           
               0    1    2    3    4    5    6    7    8    9   10
  glia       650  259 1217  319   21  163  140   38  119   18   16
  glia-APOE  265  122  573  133   23   84   38   10  124   11    4
  Neuron       2    3    0    1 1405    0    0    2    0    0    0
  NPC       1043 1050   13  818   66  594  480   12  192  302    7
  NPC-mixed   54    1    1    6   20    1   26  674    2    1  340
  NPC-pluri  279  455   13  337   26  279  379   10    3   56    9
  NPC-TNC    148  188   15  139   20  128  165    4    8    3    5
           
              11   12
  glia         1    3
  glia-APOE    4    3
  Neuron       0    1
  NPC          3    4
  NPC-mixed    0   16
  NPC-pluri  257    7
  NPC-TNC      0  212

Idents(integrated_seurat) <- "integrated_snn_res.0.6"
ClusterMarkers <- FindAllMarkers(integrated_seurat, only.pos = TRUE)  
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++                                               | 5 % ~01s          
  |+++++                                             | 10% ~01s          
  |++++++++                                          | 15% ~01s          
  |++++++++++                                        | 20% ~01s          
  |+++++++++++++                                     | 25% ~01s          
  |+++++++++++++++                                   | 30% ~01s          
  |++++++++++++++++++                                | 35% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~10s          
  |++                                                | 3 % ~10s          
  |+++                                               | 4 % ~10s          
  |+++                                               | 6 % ~10s          
  |++++                                              | 7 % ~10s          
  |+++++                                             | 9 % ~10s          
  |++++++                                            | 10% ~10s          
  |++++++                                            | 12% ~10s          
  |+++++++                                           | 13% ~10s          
  |++++++++                                          | 14% ~10s          
  |++++++++                                          | 16% ~09s          
  |+++++++++                                         | 17% ~09s          
  |++++++++++                                        | 19% ~09s          
  |+++++++++++                                       | 20% ~09s          
  |+++++++++++                                       | 22% ~09s          
  |++++++++++++                                      | 23% ~09s          
  |+++++++++++++                                     | 25% ~08s          
  |++++++++++++++                                    | 26% ~08s          
  |++++++++++++++                                    | 28% ~08s          
  |+++++++++++++++                                   | 29% ~08s          
  |++++++++++++++++                                  | 30% ~08s          
  |++++++++++++++++                                  | 32% ~08s          
  |+++++++++++++++++                                 | 33% ~08s          
  |++++++++++++++++++                                | 35% ~07s          
  |+++++++++++++++++++                               | 36% ~07s          
  |+++++++++++++++++++                               | 38% ~07s          
  |++++++++++++++++++++                              | 39% ~07s          
  |+++++++++++++++++++++                             | 41% ~07s          
  |++++++++++++++++++++++                            | 42% ~07s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |+++++++++++++++++++++++                           | 45% ~06s          
  |++++++++++++++++++++++++                          | 46% ~06s          
  |++++++++++++++++++++++++                          | 48% ~06s          
  |+++++++++++++++++++++++++                         | 49% ~06s          
  |++++++++++++++++++++++++++                        | 51% ~06s          
  |+++++++++++++++++++++++++++                       | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 55% ~05s          
  |+++++++++++++++++++++++++++++                     | 57% ~05s          
  |+++++++++++++++++++++++++++++                     | 58% ~05s          
  |++++++++++++++++++++++++++++++                    | 59% ~05s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |++++++++++++++++++++++++++++++++                  | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=11s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~24s          
  |++                                                | 2 % ~24s          
  |++                                                | 4 % ~24s          
  |+++                                               | 5 % ~23s          
  |++++                                              | 6 % ~23s          
  |++++                                              | 8 % ~23s          
  |+++++                                             | 9 % ~22s          
  |+++++                                             | 10% ~22s          
  |++++++                                            | 11% ~22s          
  |+++++++                                           | 12% ~21s          
  |+++++++                                           | 14% ~21s          
  |++++++++                                          | 15% ~21s          
  |+++++++++                                         | 16% ~21s          
  |+++++++++                                         | 18% ~20s          
  |++++++++++                                        | 19% ~20s          
  |++++++++++                                        | 20% ~20s          
  |+++++++++++                                       | 21% ~19s          
  |++++++++++++                                      | 22% ~19s          
  |++++++++++++                                      | 24% ~19s          
  |+++++++++++++                                     | 25% ~18s          
  |++++++++++++++                                    | 26% ~18s          
  |++++++++++++++                                    | 28% ~18s          
  |+++++++++++++++                                   | 29% ~18s          
  |+++++++++++++++                                   | 30% ~17s          
  |++++++++++++++++                                  | 31% ~17s          
  |+++++++++++++++++                                 | 32% ~17s          
  |+++++++++++++++++                                 | 34% ~16s          
  |++++++++++++++++++                                | 35% ~16s          
  |+++++++++++++++++++                               | 36% ~16s          
  |+++++++++++++++++++                               | 38% ~15s          
  |++++++++++++++++++++                              | 39% ~15s          
  |++++++++++++++++++++                              | 40% ~15s          
  |+++++++++++++++++++++                             | 41% ~14s          
  |++++++++++++++++++++++                            | 42% ~14s          
  |++++++++++++++++++++++                            | 44% ~14s          
  |+++++++++++++++++++++++                           | 45% ~14s          
  |++++++++++++++++++++++++                          | 46% ~13s          
  |++++++++++++++++++++++++                          | 48% ~13s          
  |+++++++++++++++++++++++++                         | 49% ~13s          
  |+++++++++++++++++++++++++                         | 50% ~12s          
  |++++++++++++++++++++++++++                        | 51% ~12s          
  |+++++++++++++++++++++++++++                       | 52% ~12s          
  |+++++++++++++++++++++++++++                       | 54% ~11s          
  |++++++++++++++++++++++++++++                      | 55% ~11s          
  |+++++++++++++++++++++++++++++                     | 56% ~11s          
  |+++++++++++++++++++++++++++++                     | 58% ~11s          
  |++++++++++++++++++++++++++++++                    | 59% ~10s          
  |++++++++++++++++++++++++++++++                    | 60% ~10s          
  |+++++++++++++++++++++++++++++++                   | 61% ~10s          
  |++++++++++++++++++++++++++++++++                  | 62% ~09s          
  |++++++++++++++++++++++++++++++++                  | 64% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~09s          
  |++++++++++++++++++++++++++++++++++                | 66% ~08s          
  |++++++++++++++++++++++++++++++++++                | 68% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~07s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~06s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=25s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~13s          
  |++                                                | 2 % ~12s          
  |++                                                | 4 % ~12s          
  |+++                                               | 5 % ~12s          
  |+++                                               | 6 % ~12s          
  |++++                                              | 7 % ~12s          
  |+++++                                             | 8 % ~11s          
  |+++++                                             | 10% ~11s          
  |++++++                                            | 11% ~11s          
  |++++++                                            | 12% ~11s          
  |+++++++                                           | 13% ~11s          
  |++++++++                                          | 14% ~11s          
  |++++++++                                          | 15% ~10s          
  |+++++++++                                         | 17% ~10s          
  |+++++++++                                         | 18% ~10s          
  |++++++++++                                        | 19% ~10s          
  |+++++++++++                                       | 20% ~10s          
  |+++++++++++                                       | 21% ~10s          
  |++++++++++++                                      | 23% ~10s          
  |++++++++++++                                      | 24% ~09s          
  |+++++++++++++                                     | 25% ~09s          
  |++++++++++++++                                    | 26% ~09s          
  |++++++++++++++                                    | 27% ~09s          
  |+++++++++++++++                                   | 29% ~09s          
  |+++++++++++++++                                   | 30% ~09s          
  |++++++++++++++++                                  | 31% ~08s          
  |+++++++++++++++++                                 | 32% ~08s          
  |+++++++++++++++++                                 | 33% ~08s          
  |++++++++++++++++++                                | 35% ~08s          
  |++++++++++++++++++                                | 36% ~08s          
  |+++++++++++++++++++                               | 37% ~08s          
  |++++++++++++++++++++                              | 38% ~08s          
  |++++++++++++++++++++                              | 39% ~07s          
  |+++++++++++++++++++++                             | 40% ~07s          
  |+++++++++++++++++++++                             | 42% ~07s          
  |++++++++++++++++++++++                            | 43% ~07s          
  |+++++++++++++++++++++++                           | 44% ~07s          
  |+++++++++++++++++++++++                           | 45% ~07s          
  |++++++++++++++++++++++++                          | 46% ~07s          
  |++++++++++++++++++++++++                          | 48% ~06s          
  |+++++++++++++++++++++++++                         | 49% ~06s          
  |+++++++++++++++++++++++++                         | 50% ~06s          
  |++++++++++++++++++++++++++                        | 51% ~06s          
  |+++++++++++++++++++++++++++                       | 52% ~06s          
  |+++++++++++++++++++++++++++                       | 54% ~06s          
  |++++++++++++++++++++++++++++                      | 55% ~06s          
  |++++++++++++++++++++++++++++                      | 56% ~05s          
  |+++++++++++++++++++++++++++++                     | 57% ~05s          
  |++++++++++++++++++++++++++++++                    | 58% ~05s          
  |++++++++++++++++++++++++++++++                    | 60% ~05s          
  |+++++++++++++++++++++++++++++++                   | 61% ~05s          
  |+++++++++++++++++++++++++++++++                   | 62% ~05s          
  |++++++++++++++++++++++++++++++++                  | 63% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~04s          
  |++++++++++++++++++++++++++++++++++                | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=12s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~22s          
  |++                                                | 2 % ~21s          
  |++                                                | 3 % ~21s          
  |+++                                               | 4 % ~21s          
  |+++                                               | 5 % ~21s          
  |++++                                              | 6 % ~20s          
  |++++                                              | 7 % ~20s          
  |+++++                                             | 8 % ~20s          
  |+++++                                             | 9 % ~20s          
  |++++++                                            | 11% ~19s          
  |++++++                                            | 12% ~19s          
  |+++++++                                           | 13% ~19s          
  |+++++++                                           | 14% ~19s          
  |++++++++                                          | 15% ~18s          
  |++++++++                                          | 16% ~18s          
  |+++++++++                                         | 17% ~18s          
  |+++++++++                                         | 18% ~18s          
  |++++++++++                                        | 19% ~18s          
  |++++++++++                                        | 20% ~17s          
  |+++++++++++                                       | 21% ~17s          
  |++++++++++++                                      | 22% ~17s          
  |++++++++++++                                      | 23% ~17s          
  |+++++++++++++                                     | 24% ~16s          
  |+++++++++++++                                     | 25% ~16s          
  |++++++++++++++                                    | 26% ~16s          
  |++++++++++++++                                    | 27% ~16s          
  |+++++++++++++++                                   | 28% ~15s          
  |+++++++++++++++                                   | 29% ~15s          
  |++++++++++++++++                                  | 31% ~15s          
  |++++++++++++++++                                  | 32% ~15s          
  |+++++++++++++++++                                 | 33% ~15s          
  |+++++++++++++++++                                 | 34% ~14s          
  |++++++++++++++++++                                | 35% ~14s          
  |++++++++++++++++++                                | 36% ~14s          
  |+++++++++++++++++++                               | 37% ~14s          
  |+++++++++++++++++++                               | 38% ~14s          
  |++++++++++++++++++++                              | 39% ~13s          
  |++++++++++++++++++++                              | 40% ~13s          
  |+++++++++++++++++++++                             | 41% ~13s          
  |++++++++++++++++++++++                            | 42% ~13s          
  |++++++++++++++++++++++                            | 43% ~12s          
  |+++++++++++++++++++++++                           | 44% ~12s          
  |+++++++++++++++++++++++                           | 45% ~12s          
  |++++++++++++++++++++++++                          | 46% ~12s          
  |++++++++++++++++++++++++                          | 47% ~11s          
  |+++++++++++++++++++++++++                         | 48% ~11s          
  |+++++++++++++++++++++++++                         | 49% ~11s          
  |++++++++++++++++++++++++++                        | 51% ~11s          
  |++++++++++++++++++++++++++                        | 52% ~11s          
  |+++++++++++++++++++++++++++                       | 53% ~10s          
  |+++++++++++++++++++++++++++                       | 54% ~10s          
  |++++++++++++++++++++++++++++                      | 55% ~10s          
  |++++++++++++++++++++++++++++                      | 56% ~10s          
  |+++++++++++++++++++++++++++++                     | 57% ~10s          
  |+++++++++++++++++++++++++++++                     | 58% ~09s          
  |++++++++++++++++++++++++++++++                    | 59% ~09s          
  |++++++++++++++++++++++++++++++                    | 60% ~09s          
  |+++++++++++++++++++++++++++++++                   | 61% ~09s          
  |++++++++++++++++++++++++++++++++                  | 62% ~08s          
  |++++++++++++++++++++++++++++++++                  | 63% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~08s          
  |++++++++++++++++++++++++++++++++++                | 66% ~07s          
  |++++++++++++++++++++++++++++++++++                | 67% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~06s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=22s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 3 % ~05s          
  |++                                                | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 7 % ~05s          
  |++++                                              | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 11% ~05s          
  |++++++                                            | 12% ~05s          
  |+++++++                                           | 13% ~05s          
  |++++++++                                          | 14% ~05s          
  |++++++++                                          | 16% ~05s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 30% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |++++++++++++++++++++                              | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 8 % ~05s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 26% ~04s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |+++++++++++++++++++                               | 36% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |+++++                                             | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |+++++++                                           | 12% ~05s          
  |+++++++                                           | 14% ~05s          
  |++++++++                                          | 15% ~05s          
  |+++++++++                                         | 16% ~05s          
  |+++++++++                                         | 18% ~05s          
  |++++++++++                                        | 19% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |+++++++++++++++                                   | 30% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |+++++++++++++++++                                 | 32% ~04s          
  |+++++++++++++++++                                 | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 36% ~04s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=06s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~22s          
  |+                                                 | 2 % ~22s          
  |++                                                | 3 % ~22s          
  |++                                                | 4 % ~22s          
  |+++                                               | 5 % ~22s          
  |+++                                               | 6 % ~21s          
  |++++                                              | 7 % ~21s          
  |++++                                              | 8 % ~21s          
  |+++++                                             | 9 % ~21s          
  |+++++                                             | 10% ~21s          
  |++++++                                            | 11% ~20s          
  |++++++                                            | 12% ~20s          
  |+++++++                                           | 13% ~20s          
  |+++++++                                           | 14% ~20s          
  |++++++++                                          | 15% ~19s          
  |++++++++                                          | 16% ~19s          
  |+++++++++                                         | 17% ~19s          
  |+++++++++                                         | 18% ~19s          
  |++++++++++                                        | 19% ~18s          
  |++++++++++                                        | 20% ~18s          
  |+++++++++++                                       | 21% ~18s          
  |+++++++++++                                       | 22% ~18s          
  |++++++++++++                                      | 23% ~18s          
  |++++++++++++                                      | 24% ~17s          
  |+++++++++++++                                     | 25% ~17s          
  |+++++++++++++                                     | 26% ~17s          
  |++++++++++++++                                    | 27% ~17s          
  |++++++++++++++                                    | 28% ~16s          
  |+++++++++++++++                                   | 29% ~16s          
  |+++++++++++++++                                   | 30% ~16s          
  |++++++++++++++++                                  | 31% ~16s          
  |++++++++++++++++                                  | 32% ~16s          
  |+++++++++++++++++                                 | 33% ~15s          
  |+++++++++++++++++                                 | 34% ~15s          
  |++++++++++++++++++                                | 35% ~15s          
  |++++++++++++++++++                                | 36% ~15s          
  |+++++++++++++++++++                               | 37% ~14s          
  |+++++++++++++++++++                               | 38% ~14s          
  |++++++++++++++++++++                              | 39% ~14s          
  |++++++++++++++++++++                              | 40% ~14s          
  |+++++++++++++++++++++                             | 41% ~14s          
  |+++++++++++++++++++++                             | 42% ~13s          
  |++++++++++++++++++++++                            | 43% ~13s          
  |++++++++++++++++++++++                            | 44% ~13s          
  |+++++++++++++++++++++++                           | 45% ~13s          
  |+++++++++++++++++++++++                           | 46% ~12s          
  |++++++++++++++++++++++++                          | 47% ~12s          
  |++++++++++++++++++++++++                          | 48% ~12s          
  |+++++++++++++++++++++++++                         | 49% ~12s          
  |+++++++++++++++++++++++++                         | 50% ~12s          
  |++++++++++++++++++++++++++                        | 51% ~11s          
  |++++++++++++++++++++++++++                        | 52% ~11s          
  |+++++++++++++++++++++++++++                       | 53% ~11s          
  |+++++++++++++++++++++++++++                       | 54% ~11s          
  |++++++++++++++++++++++++++++                      | 55% ~10s          
  |++++++++++++++++++++++++++++                      | 56% ~10s          
  |+++++++++++++++++++++++++++++                     | 57% ~10s          
  |+++++++++++++++++++++++++++++                     | 58% ~10s          
  |++++++++++++++++++++++++++++++                    | 59% ~09s          
  |++++++++++++++++++++++++++++++                    | 60% ~09s          
  |+++++++++++++++++++++++++++++++                   | 61% ~09s          
  |+++++++++++++++++++++++++++++++                   | 62% ~09s          
  |++++++++++++++++++++++++++++++++                  | 63% ~09s          
  |++++++++++++++++++++++++++++++++                  | 64% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~08s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~08s          
  |++++++++++++++++++++++++++++++++++                | 67% ~08s          
  |++++++++++++++++++++++++++++++++++                | 68% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~07s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~06s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~05s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=23s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 4 % ~05s          
  |+++                                               | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~07s          
  |++                                                | 4 % ~07s          
  |+++                                               | 6 % ~07s          
  |++++                                              | 8 % ~07s          
  |+++++                                             | 9 % ~07s          
  |++++++                                            | 11% ~07s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 17% ~06s          
  |++++++++++                                        | 19% ~06s          
  |+++++++++++                                       | 21% ~06s          
  |++++++++++++                                      | 23% ~06s          
  |+++++++++++++                                     | 25% ~06s          
  |++++++++++++++                                    | 26% ~05s          
  |+++++++++++++++                                   | 28% ~05s          
  |++++++++++++++++                                  | 30% ~05s          
  |+++++++++++++++++                                 | 32% ~05s          
  |+++++++++++++++++                                 | 34% ~05s          
  |++++++++++++++++++                                | 36% ~05s          
  |+++++++++++++++++++                               | 38% ~05s          
  |++++++++++++++++++++                              | 40% ~04s          
  |+++++++++++++++++++++                             | 42% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 49% ~04s          
  |++++++++++++++++++++++++++                        | 51% ~04s          
  |+++++++++++++++++++++++++++                       | 53% ~04s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 58% ~03s          
  |+++++++++++++++++++++++++++++++                   | 60% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~03s          
  |++++++++++++++++++++++++++++++++++                | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=08s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |+                                                 | 2 % ~08s          
  |++                                                | 4 % ~08s          
  |+++                                               | 5 % ~08s          
  |++++                                              | 7 % ~07s          
  |+++++                                             | 9 % ~07s          
  |++++++                                            | 11% ~07s          
  |+++++++                                           | 12% ~07s          
  |++++++++                                          | 14% ~07s          
  |++++++++                                          | 16% ~07s          
  |+++++++++                                         | 18% ~06s          
  |++++++++++                                        | 19% ~06s          
  |+++++++++++                                       | 21% ~06s          
  |++++++++++++                                      | 23% ~06s          
  |+++++++++++++                                     | 25% ~06s          
  |++++++++++++++                                    | 26% ~06s          
  |+++++++++++++++                                   | 28% ~06s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~05s          
  |++++++++++++++++++                                | 35% ~05s          
  |+++++++++++++++++++                               | 37% ~05s          
  |++++++++++++++++++++                              | 39% ~05s          
  |+++++++++++++++++++++                             | 40% ~05s          
  |++++++++++++++++++++++                            | 42% ~05s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 49% ~04s          
  |++++++++++++++++++++++++++                        | 51% ~04s          
  |+++++++++++++++++++++++++++                       | 53% ~04s          
  |++++++++++++++++++++++++++++                      | 54% ~04s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=08s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~11s          
  |++                                                | 3 % ~11s          
  |++                                                | 4 % ~10s          
  |+++                                               | 5 % ~10s          
  |++++                                              | 6 % ~10s          
  |++++                                              | 8 % ~10s          
  |+++++                                             | 9 % ~10s          
  |++++++                                            | 10% ~10s          
  |++++++                                            | 11% ~10s          
  |+++++++                                           | 13% ~09s          
  |+++++++                                           | 14% ~09s          
  |++++++++                                          | 15% ~09s          
  |+++++++++                                         | 16% ~09s          
  |+++++++++                                         | 18% ~09s          
  |++++++++++                                        | 19% ~09s          
  |+++++++++++                                       | 20% ~09s          
  |+++++++++++                                       | 22% ~09s          
  |++++++++++++                                      | 23% ~08s          
  |+++++++++++++                                     | 24% ~08s          
  |+++++++++++++                                     | 25% ~08s          
  |++++++++++++++                                    | 27% ~08s          
  |++++++++++++++                                    | 28% ~08s          
  |+++++++++++++++                                   | 29% ~08s          
  |++++++++++++++++                                  | 30% ~08s          
  |++++++++++++++++                                  | 32% ~08s          
  |+++++++++++++++++                                 | 33% ~08s          
  |++++++++++++++++++                                | 34% ~07s          
  |++++++++++++++++++                                | 35% ~07s          
  |+++++++++++++++++++                               | 37% ~07s          
  |+++++++++++++++++++                               | 38% ~07s          
  |++++++++++++++++++++                              | 39% ~07s          
  |+++++++++++++++++++++                             | 41% ~07s          
  |+++++++++++++++++++++                             | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |+++++++++++++++++++++++                           | 44% ~06s          
  |+++++++++++++++++++++++                           | 46% ~06s          
  |++++++++++++++++++++++++                          | 47% ~06s          
  |+++++++++++++++++++++++++                         | 48% ~06s          
  |+++++++++++++++++++++++++                         | 49% ~06s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |++++++++++++++++++++++++++                        | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |++++++++++++++++++++++++++++                      | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 56% ~05s          
  |+++++++++++++++++++++++++++++                     | 57% ~05s          
  |++++++++++++++++++++++++++++++                    | 58% ~05s          
  |++++++++++++++++++++++++++++++                    | 59% ~05s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |++++++++++++++++++++++++++++++++                  | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=11s  
  

checkCelltypes(cluster_num = 12)
Uploading data to Enrichr... Done.
  Querying CellMarker_Augmented_2021... Done.
  Querying Azimuth_Cell_Types_2021... Done.
Parsing results... Done.

Add annotation


# we need to set the identity to rename
Idents(integrated_seurat) <- "integrated_snn_res.0.6"

# we need to make a vector of the cell type in the same order - in the cluster order

cell_types <- c("RG", "NPC-stem","glia-stem",
                 "NPC-div1","Neuron","NPC-stem2","NPC-div2",
                 "NPC-mixed","glia","astro","NPC-div3",
                 "NPC-pluri","glia-RG")
names(cell_types) <- levels(integrated_seurat)

integrated_seurat <- RenameIdents(integrated_seurat, cell_types)
integrated_seurat <- AddMetaData(object=integrated_seurat, metadata=Idents(integrated_seurat), col.name = "CellTypesInt")

DimPlot(integrated_seurat, label = TRUE, label.size = 2)

Idents(integrated_seurat) <- "integrated_snn_res.0.6"

# we need to make a vector of the cell type in the same order - in the cluster order

cell_types <- c("RG", "NPC-stem","glia",
                 "NPC-div","Neuron","NPC-stem","NPC-div",
                 "NPC-mixed","glia","astro","NPC-mixed",
                 "NPC-stem","glia2")
names(cell_types) <- levels(integrated_seurat)

integrated_seurat <- RenameIdents(integrated_seurat, cell_types)
integrated_seurat <- AddMetaData(object=integrated_seurat, metadata=Idents(integrated_seurat), col.name = "CellTypesInt2")

DimPlot(integrated_seurat, label = TRUE, label.size = 2)

Now make a table of the assigned cell counts


seu <- integrated_seurat

gene.count <- as.data.frame(table(seu$Genotype_ID))

group.gene <- as.data.frame(table(seu$souporcell_assignment, seu$Genotype_ID))

soup.count <- as.data.frame(table(seu$souporcell_assignment))

# Assuming your long table is named 'long_table'
wide_table <- group.gene %>%
  pivot_wider(names_from = Var1, values_from = Freq)

wide_table
write.csv(wide_table,"/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/SoupoGeneIDJune28.csv")

Read in annotated object saved June 28

seu <- readRDS("/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/Integr_seu_ann_June28.RDS")

Check if it’s correct

DimPlot(seu)

Add meta data - diagnosis


#seu$souporcell_assignment
#seu$Genotype_ID
Idents(seu) <- "Genotype_ID"
levels(seu)
 [1] "28_CH79DIVUZHD100462"          "22_CH47DIVUZHD100456"         
 [3] "4_CH96GSAUZHD100576"           "19_CH31DIVUZHD100453"         
 [5] "unassigned"                    "29_CH52DIVUZHD100463"         
 [7] "saliva_mr-023__saliva_mr-023_" "23_CH20DIVUZHD100457"         
 [9] "32_CH97GSAUZHD100946"          "3_CH26GSAUZHD100575"          
diagnose <- c("ADHD","Control","Control","Control",
              "Unassigned","ADHD","ADHD","ADHD","ADHD-non","Control")

names(diagnose) <- levels(seu)

seu <- RenameIdents(seu, diagnose)
seu <- AddMetaData(object=seu, metadata=Idents(seu), col.name = "Diagnosis")

DimPlot(seu, label = FALSE)

Differential gene expression by cell type

colnames(seu@meta.data)
 [1] "orig.ident"             "nCount_RNA"            
 [3] "nFeature_RNA"           "souporcell_status"     
 [5] "souporcell_assignment"  "percent.MT"            
 [7] "RNA_snn_res.0"          "RNA_snn_res.0.05"      
 [9] "RNA_snn_res.0.25"       "RNA_snn_res.0.6"       
[11] "RNA_snn_res.1"          "RNA_snn_res.1.5"       
[13] "seurat_clusters"        "CellTypes"             
[15] "CellTypes1"             "Celltypes1"            
[17] "integrated_snn_res.0.6" "integrated_snn_res.1"  
[19] "Genotype_ID"            "CellTypesInt"          
[21] "CellTypesInt2"          "Diagnosis"             
# subset the cell type we are interested
Idents(seu) <- "CellTypesInt2"
levels(seu)
[1] "RG"        "NPC-stem"  "glia"      "NPC-div"   "Neuron"    "NPC-mixed"
[7] "astro"     "glia2"    
# get just the NPC-div cells
NPC_div <- subset(seu, idents = "NPC-div")
levels(NPC_div)
[1] "NPC-div"
Idents(NPC_div) <- "Diagnosis"
NPC_div_DGE <- FindMarkers(NPC_div, ident.1 = "ADHD",
                           ident.2 = "Control", logfc.threshold = 0.01)

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~25s          
  |++                                                | 2 % ~24s          
  |++                                                | 3 % ~24s          
  |+++                                               | 4 % ~24s          
  |+++                                               | 5 % ~23s          
  |++++                                              | 6 % ~23s          
  |++++                                              | 7 % ~23s          
  |+++++                                             | 8 % ~23s          
  |+++++                                             | 9 % ~22s          
  |++++++                                            | 10% ~22s          
  |++++++                                            | 11% ~22s          
  |+++++++                                           | 12% ~22s          
  |+++++++                                           | 13% ~21s          
  |++++++++                                          | 14% ~21s          
  |++++++++                                          | 15% ~21s          
  |+++++++++                                         | 16% ~21s          
  |+++++++++                                         | 17% ~20s          
  |++++++++++                                        | 18% ~20s          
  |++++++++++                                        | 19% ~20s          
  |+++++++++++                                       | 20% ~20s          
  |+++++++++++                                       | 21% ~19s          
  |++++++++++++                                      | 22% ~19s          
  |++++++++++++                                      | 23% ~19s          
  |+++++++++++++                                     | 24% ~19s          
  |+++++++++++++                                     | 26% ~18s          
  |++++++++++++++                                    | 27% ~18s          
  |++++++++++++++                                    | 28% ~18s          
  |+++++++++++++++                                   | 29% ~18s          
  |+++++++++++++++                                   | 30% ~17s          
  |++++++++++++++++                                  | 31% ~17s          
  |++++++++++++++++                                  | 32% ~17s          
  |+++++++++++++++++                                 | 33% ~17s          
  |+++++++++++++++++                                 | 34% ~16s          
  |++++++++++++++++++                                | 35% ~16s          
  |++++++++++++++++++                                | 36% ~16s          
  |+++++++++++++++++++                               | 37% ~16s          
  |+++++++++++++++++++                               | 38% ~15s          
  |++++++++++++++++++++                              | 39% ~15s          
  |++++++++++++++++++++                              | 40% ~15s          
  |+++++++++++++++++++++                             | 41% ~15s          
  |+++++++++++++++++++++                             | 42% ~14s          
  |++++++++++++++++++++++                            | 43% ~14s          
  |++++++++++++++++++++++                            | 44% ~14s          
  |+++++++++++++++++++++++                           | 45% ~14s          
  |+++++++++++++++++++++++                           | 46% ~13s          
  |++++++++++++++++++++++++                          | 47% ~13s          
  |++++++++++++++++++++++++                          | 48% ~13s          
  |+++++++++++++++++++++++++                         | 49% ~13s          
  |+++++++++++++++++++++++++                         | 50% ~12s          
  |++++++++++++++++++++++++++                        | 51% ~12s          
  |+++++++++++++++++++++++++++                       | 52% ~12s          
  |+++++++++++++++++++++++++++                       | 53% ~12s          
  |++++++++++++++++++++++++++++                      | 54% ~11s          
  |++++++++++++++++++++++++++++                      | 55% ~11s          
  |+++++++++++++++++++++++++++++                     | 56% ~11s          
  |+++++++++++++++++++++++++++++                     | 57% ~11s          
  |++++++++++++++++++++++++++++++                    | 58% ~10s          
  |++++++++++++++++++++++++++++++                    | 59% ~10s          
  |+++++++++++++++++++++++++++++++                   | 60% ~10s          
  |+++++++++++++++++++++++++++++++                   | 61% ~10s          
  |++++++++++++++++++++++++++++++++                  | 62% ~09s          
  |++++++++++++++++++++++++++++++++                  | 63% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~09s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~09s          
  |++++++++++++++++++++++++++++++++++                | 66% ~08s          
  |++++++++++++++++++++++++++++++++++                | 67% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~08s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~08s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~07s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~07s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~07s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~06s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~06s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~06s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~05s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=25s  

Check some expression


DoHeatmap(NPC_div, group.by = "Diagnosis", features = c("XIST","KRT18","CRABP1",
                                                        "FRZB","A2M","CHCHD2"))


DotPlot(NPC_div, group.by = "Diagnosis", features = c("XIST","KRT18","CRABP1",
                                                        "FRZB","A2M","CHCHD2"))+RotatedAxis()
Warning: Scaling data with a low number of groups may produce misleading results

NPC-stem


Idents(seu) <- "CellTypesInt2"

# get just the NPC-stem cells
NPC_stem <- subset(seu, idents = "NPC-stem")
levels(NPC_stem)
[1] "NPC-stem"
# DGE

Idents(NPC_stem) <- "Diagnosis"
NPC_stem_DGE <- FindMarkers(NPC_stem, ident.1 = "ADHD",
                           ident.2 = "Control", logfc.threshold = 0.01)

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~31s          
  |+                                                 | 2 % ~31s          
  |++                                                | 3 % ~31s          
  |++                                                | 4 % ~30s          
  |+++                                               | 5 % ~30s          
  |+++                                               | 6 % ~29s          
  |++++                                              | 7 % ~29s          
  |++++                                              | 8 % ~29s          
  |+++++                                             | 9 % ~28s          
  |+++++                                             | 10% ~28s          
  |++++++                                            | 11% ~28s          
  |++++++                                            | 12% ~27s          
  |+++++++                                           | 13% ~27s          
  |+++++++                                           | 14% ~27s          
  |++++++++                                          | 15% ~27s          
  |++++++++                                          | 16% ~26s          
  |+++++++++                                         | 17% ~26s          
  |+++++++++                                         | 18% ~26s          
  |++++++++++                                        | 19% ~25s          
  |++++++++++                                        | 20% ~25s          
  |+++++++++++                                       | 21% ~25s          
  |+++++++++++                                       | 22% ~24s          
  |++++++++++++                                      | 23% ~24s          
  |++++++++++++                                      | 24% ~24s          
  |+++++++++++++                                     | 25% ~23s          
  |+++++++++++++                                     | 26% ~23s          
  |++++++++++++++                                    | 27% ~23s          
  |++++++++++++++                                    | 28% ~22s          
  |+++++++++++++++                                   | 29% ~22s          
  |+++++++++++++++                                   | 30% ~22s          
  |++++++++++++++++                                  | 31% ~22s          
  |++++++++++++++++                                  | 32% ~21s          
  |+++++++++++++++++                                 | 33% ~22s          
  |+++++++++++++++++                                 | 34% ~21s          
  |++++++++++++++++++                                | 35% ~21s          
  |++++++++++++++++++                                | 36% ~21s          
  |+++++++++++++++++++                               | 37% ~20s          
  |+++++++++++++++++++                               | 38% ~20s          
  |++++++++++++++++++++                              | 39% ~19s          
  |++++++++++++++++++++                              | 40% ~19s          
  |+++++++++++++++++++++                             | 41% ~19s          
  |+++++++++++++++++++++                             | 42% ~18s          
  |++++++++++++++++++++++                            | 43% ~18s          
  |++++++++++++++++++++++                            | 44% ~18s          
  |+++++++++++++++++++++++                           | 45% ~17s          
  |+++++++++++++++++++++++                           | 46% ~17s          
  |++++++++++++++++++++++++                          | 47% ~17s          
  |++++++++++++++++++++++++                          | 48% ~17s          
  |+++++++++++++++++++++++++                         | 49% ~16s          
  |+++++++++++++++++++++++++                         | 50% ~16s          
  |++++++++++++++++++++++++++                        | 51% ~16s          
  |++++++++++++++++++++++++++                        | 52% ~15s          
  |+++++++++++++++++++++++++++                       | 53% ~15s          
  |+++++++++++++++++++++++++++                       | 54% ~15s          
  |++++++++++++++++++++++++++++                      | 55% ~14s          
  |++++++++++++++++++++++++++++                      | 56% ~14s          
  |+++++++++++++++++++++++++++++                     | 57% ~14s          
  |+++++++++++++++++++++++++++++                     | 58% ~13s          
  |++++++++++++++++++++++++++++++                    | 59% ~13s          
  |++++++++++++++++++++++++++++++                    | 60% ~13s          
  |+++++++++++++++++++++++++++++++                   | 61% ~12s          
  |+++++++++++++++++++++++++++++++                   | 62% ~12s          
  |++++++++++++++++++++++++++++++++                  | 63% ~12s          
  |++++++++++++++++++++++++++++++++                  | 64% ~11s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~11s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~11s          
  |++++++++++++++++++++++++++++++++++                | 67% ~10s          
  |++++++++++++++++++++++++++++++++++                | 68% ~10s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~10s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~09s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~09s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~09s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~08s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~08s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~08s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~08s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~07s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~07s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~07s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~06s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~06s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~06s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~05s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~05s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~04s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~04s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=31s  
write.csv(NPC_stem_DGE, "/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/NPC_stem_DGE.csv")

dge <- c("CA4","STMN2","KRT18","HIST1H1A","S100A10","IFI27","CLSPN","IFI6","HELLS", "ACTC1")

DoHeatmap(NPC_div, group.by = "Diagnosis", features = dge)


DotPlot(NPC_div, group.by = "Diagnosis", features = dge)+RotatedAxis()
Warning: Scaling data with a low number of groups may produce misleading results

Idents(seu) <- "CellTypesInt2"

# get just the neuron cells
neurons <- subset(seu, idents = "Neuron")


# DGE

Idents(neurons) <- "Diagnosis"
neurons_DGE <- FindMarkers(neurons, ident.1 = "ADHD",
                           ident.2 = "Control", logfc.threshold = 0.01)

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~15s          
  |++                                                | 2 % ~14s          
  |++                                                | 3 % ~14s          
  |+++                                               | 4 % ~14s          
  |+++                                               | 5 % ~13s          
  |++++                                              | 6 % ~13s          
  |++++                                              | 7 % ~13s          
  |+++++                                             | 9 % ~13s          
  |+++++                                             | 10% ~13s          
  |++++++                                            | 11% ~13s          
  |++++++                                            | 12% ~13s          
  |+++++++                                           | 13% ~12s          
  |+++++++                                           | 14% ~12s          
  |++++++++                                          | 15% ~12s          
  |++++++++                                          | 16% ~12s          
  |+++++++++                                         | 17% ~12s          
  |++++++++++                                        | 18% ~12s          
  |++++++++++                                        | 19% ~11s          
  |+++++++++++                                       | 20% ~11s          
  |+++++++++++                                       | 21% ~11s          
  |++++++++++++                                      | 22% ~11s          
  |++++++++++++                                      | 23% ~11s          
  |+++++++++++++                                     | 24% ~11s          
  |+++++++++++++                                     | 26% ~11s          
  |++++++++++++++                                    | 27% ~10s          
  |++++++++++++++                                    | 28% ~10s          
  |+++++++++++++++                                   | 29% ~10s          
  |+++++++++++++++                                   | 30% ~10s          
  |++++++++++++++++                                  | 31% ~10s          
  |++++++++++++++++                                  | 32% ~10s          
  |+++++++++++++++++                                 | 33% ~09s          
  |++++++++++++++++++                                | 34% ~09s          
  |++++++++++++++++++                                | 35% ~09s          
  |+++++++++++++++++++                               | 36% ~09s          
  |+++++++++++++++++++                               | 37% ~09s          
  |++++++++++++++++++++                              | 38% ~09s          
  |++++++++++++++++++++                              | 39% ~09s          
  |+++++++++++++++++++++                             | 40% ~08s          
  |+++++++++++++++++++++                             | 41% ~08s          
  |++++++++++++++++++++++                            | 43% ~08s          
  |++++++++++++++++++++++                            | 44% ~08s          
  |+++++++++++++++++++++++                           | 45% ~08s          
  |+++++++++++++++++++++++                           | 46% ~08s          
  |++++++++++++++++++++++++                          | 47% ~07s          
  |++++++++++++++++++++++++                          | 48% ~07s          
  |+++++++++++++++++++++++++                         | 49% ~07s          
  |+++++++++++++++++++++++++                         | 50% ~07s          
  |++++++++++++++++++++++++++                        | 51% ~07s          
  |+++++++++++++++++++++++++++                       | 52% ~07s          
  |+++++++++++++++++++++++++++                       | 53% ~07s          
  |++++++++++++++++++++++++++++                      | 54% ~06s          
  |++++++++++++++++++++++++++++                      | 55% ~06s          
  |+++++++++++++++++++++++++++++                     | 56% ~06s          
  |+++++++++++++++++++++++++++++                     | 57% ~06s          
  |++++++++++++++++++++++++++++++                    | 59% ~06s          
  |++++++++++++++++++++++++++++++                    | 60% ~06s          
  |+++++++++++++++++++++++++++++++                   | 61% ~06s          
  |+++++++++++++++++++++++++++++++                   | 62% ~05s          
  |++++++++++++++++++++++++++++++++                  | 63% ~05s          
  |++++++++++++++++++++++++++++++++                  | 64% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~05s          
  |++++++++++++++++++++++++++++++++++                | 67% ~05s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~03s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=14s  
write.csv(neurons_DGE, "/Users/rhalenathomas/Documents/Data/scRNAseq/ADHD_ZNZ_Mcgill/Neurons_DGE.csv")
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKUXVpY2sgY2hlY2sgb2YgdGhlIGZpcnN0IG5vLWdlbmV0aWMgZGF0YSBkZW11bHRpcGxleCBzZXF1ZW5jaW5nIGZyb20gdGhlIHBpbG90LgpOUENzCgpgYGB7cn0KbGlicmFyeShTZXVyYXQpCmxpYnJhcnkodGlkeXZlcnNlKQojbGlicmFyeShEb3VibGV0RmluZGVyKQpsaWJyYXJ5KGVucmljaFIpCmxpYnJhcnkoY2x1c3RyZWUpCiNsaWJyYXJ5KCJzY0NsYXNzaWZ5IikKI2xpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCiNsaWJyYXJ5KCJNYXRyaXgiKQoKCmBgYApSZWFkIGluIHRoZSBkYXRhCgpgYGB7cn0Kc2V1IDwtIHJlYWRSRFMoIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FESERfWk5aX01jZ2lsbC9zZXVfc291cG9yY2VsbF9BREhELnJkcyIpCmNvbG5hbWVzKHNldUBtZXRhLmRhdGEpICMgc2hvd3MgeW91IHRoZSBtZXRhIGRhdGEKCnVuaXF1ZShzZXUkb3JpZy5pZGVudCkKdW5pcXVlKHNldSRzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQpCnVuaXF1ZShzZXUkc291cG9yY2VsbF9zdGF0dXMpCmRpbShzZXUpCgoKYGBgCgpgYGB7cn0KCnRhYmxlKHNldSRzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQpCgpgYGAKCkxvb2sgYXQgdGhlIHNlcXVlbmNpbmcKCmBgYHtyfQoKVmxuUGxvdChzZXUsIGZlYXR1cmVzID0gYygibkNvdW50X1JOQSIsIm5GZWF0dXJlX1JOQSIpLCBwdC5zaXplID0gMC4wMDEpClZsblBsb3Qoc2V1LCBmZWF0dXJlcyA9IGMoIm5GZWF0dXJlX1JOQSIpLCBwdC5zaXplID0gMC4wMDEsIHkubWF4ID0gNTAwKQpWbG5QbG90KHNldSwgZmVhdHVyZXMgPSBjKCJuQ291bnRfUk5BIiksIHB0LnNpemUgPSAwLjAwMSwgeS5tYXggPSA1MDAwMCkKVmxuUGxvdChzZXUsIGZlYXR1cmVzID0gYygibkNvdW50X1JOQSIpLCBwdC5zaXplID0gMC4wMDEsIHkubWF4ID0gNTAwMCkKCnNldSRuRmVhdHVyZV9STkEgJT4lIHN1bW1hcnkKc2V1JG5Db3VudF9STkEgJT4lIHN1bW1hcnkKCmBgYAoKYGBge3J9Cgp0YWJsZShzZXUkc291cG9yY2VsbF9zdGF0dXMpCmRpbShzZXUpCgoKYGBgCgoKCgpDYWxjdWxhdGUgdGhlIHBlcmNlbnQgbWl0b2Nob25kcmlhbCBnZW5lcwpgYGB7cn0Kc2V1IDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KHNldSwgcGF0dGVybiA9ICJeTVQtIiwgY29sLm5hbWUgPSAicGVyY2VudC5NVCIpCnNldSRwZXJjZW50Lk1UICU+JSBzdW1tYXJ5CgpWbG5QbG90KHNldSwgZmVhdHVyZXMgPSAicGVyY2VudC5NVCIsIHB0LnNpemUgPSAwLjAwMSkKVmxuUGxvdChzZXUsIGZlYXR1cmVzID0gInBlcmNlbnQuTVQiLCBwdC5zaXplID0gMC4wMDEsIHkubWF4ID0gMjApCgoKYGBgCkknbGwgdXNlIDEwJSBhcyBhIGN1dG9mZiBhbmQgY2hlY2sgaWYgdGhpcyByZW1vdmVzIG1vcmUgb2YgdGhlIGxvdyByZWFkIGNlbGxzLiBJIGJlbGlldmUgdGhpcyBvYmplY3QgaXMgYWxyZWFkeSB0aGUgQ2VsbFJhbmdlciBGaWx0ZXJlZCBvYmplY3QuIAoKYGBge3J9CiNSZW1vdmUgYW55IGNlbGxzIHdpdGggbW9yZSB0aGFuIDEwJSBtaXRvY2hvbmRyaWFsIGNvdW50cwojc2V1LmZ0IDwtIHN1YnNldChzZXUsIHBlcmNlbnQuTVQgPCAxMCkKI2RpbShzZXUpCiNkaW0oc2V1LmZ0KQojIHJlbW92ZWQgNjU2IGNlbGxzCnNldS5mdCA8LSBzdWJzZXQoc2V1LCBwZXJjZW50Lk1UIDwgMjApCmRpbShzZXUpCmRpbShzZXUuZnQpCgojIHJlbW92ZWQgMzM5IGNlbGxzClZsblBsb3Qoc2V1LmZ0LCBmZWF0dXJlcyA9IGMoIm5Db3VudF9STkEiLCJuRmVhdHVyZV9STkEiLCJwZXJjZW50Lk1UIiksIHB0LnNpemUgPSAwLjAwMSkKCgpgYGAKCmBgYHtyfQojIGhhdmUgYSBsb29rIGF0IGhvdyB0aGUgY291bnRzIGFuZCBSTkEgYXJlIGRpc3RyaWJ1dGVkIGFjcm9zcyBzaW5nbGUsIGRvdWJsZXQsIHVuYXNzaWduZWQKClZsblBsb3Qoc2V1LCBmZWF0dXJlcyA9IGMoIm5Db3VudF9STkEiLCJuRmVhdHVyZV9STkEiKSwgZ3JvdXAuYnkgPSAic291cG9yY2VsbF9zdGF0dXMiKQojIHNlZSBtb3N0IG9mIHRoZSB1bmFzc2lnbmVkIGhhdmUgbG93IGNvdW50cyBhbmQgZmVhdHVyZXMgYW5kIGRvdWJsZXRzIGhhdmUgaGlnaGVyIGNvdW50cyBhbmQgaGlnaGVyIGZlYXR1cmVzCgpWbG5QbG90KHNldSwgZmVhdHVyZXMgPSBjKCJuQ291bnRfUk5BIiksIGdyb3VwLmJ5ID0gInNvdXBvcmNlbGxfc3RhdHVzIiwgeS5tYXggPSA2MDAwKQpWbG5QbG90KHNldSwgZmVhdHVyZXMgPSBjKCJuRmVhdHVyZV9STkEiKSwgZ3JvdXAuYnkgPSAic291cG9yY2VsbF9zdGF0dXMiLCB5Lm1heCA9IDMwMDApCgoKCmBgYApJIHdpbGwgZmlsdGVyIGZvciBoaWdoZXIgY291bnRzIGFuZCBsb3dlciBjb3VudHMKCgpgYGB7cn0KIyB3ZSBhcmVuJ3QgYWRkaW5nIGFueSBtb3JlIGZpbHRlcnMgaGVyZQoKYGBgCmNsZWFuIHVwCgpgYGB7cn0KCnNldSA8LSBzZXUuZnQKcm0oc2V1LmZ0KQoKYGBgCgoKUmVtb3ZlIHRoZSBkb3VibGV0cyBhbmQgdGhlIHVuYXNzaWduZWQgY2VsbHMKCmBgYHtyfQojIGRpbSAoc2V1KSBmZWF0dXJlczogMzM1MzggIGNlbGxzOiAxNzE4MQpJZGVudHMoc2V1KSA8LSAic291cG9yY2VsbF9zdGF0dXMiCmxldmVscyhzZXUpCnNldSA8LSBzdWJzZXQoc2V1LCBpZGVudHMgPSAic2luZ2xldCIpCgpkaW0oc2V1KQojIDMzNTM4ICAgY2VsbHM6IDE0NjQzCgpgYGAKCgoKTm93IHRoZSB3b3JrZmxvdyB0byBtYWtlIGNsdXN0ZXJzCmBgYHtyfQpzZXUgPC0gTm9ybWFsaXplRGF0YShzZXUsIG5vcm1hbGl6YXRpb24ubWV0aG9kID0gIkxvZ05vcm1hbGl6ZSIsIHNjYWxlLmZhY3RvciA9IDEwMDAwKQpzZXUgPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1LCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDI1MDApCgp2YXIgIDwtIFZhcmlhYmxlRmVhdHVyZXMoc2V1KQp0b3AxMCA8LSB2YXJbMToxMF0KCnAxIDwtIFZhcmlhYmxlRmVhdHVyZVBsb3Qoc2V1KSAKcDIgPC0gTGFiZWxQb2ludHMocGxvdCA9IHAxLCBwb2ludHMgPSB0b3AxMCwgcmVwZWwgPSBUUlVFKQpwMgoKCgpgYGAKU2NhbGUgYW5kIGdldCBQQ0EKCmBgYHtyfQoKCiNMaW5lYXIgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uCiNDaG9vc2luZyB0aGUgbnVtYmVyIG9mIFBDcyBjYW4gZGVwZW5kIG9uIGhvdyBtYW55IGNlbGxzIHlvdSBoYXZlCnNldSA8LSBTY2FsZURhdGEoc2V1KQpzZXUgPC0gUnVuUENBKHNldSwgYXNzYXkgPSAiUk5BIiwgbnBjcyA9IDMwKQoKUENBUGxvdChzZXUpCgojQXNzZXNzIGhvdyBtYW55IFBDcyBjYXB0dXJlIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBkYXRhIApFbGJvd1Bsb3Qoc2V1LCBuZGltcyA9IDMwKQoKYGBgCgoyMCBQQ3MgYXJlIGdvb2Qgbm93IG1ha2UgdGhlIFVNQVAKCmBgYHtyfQoKc2V1IDwtIFJ1blVNQVAoc2V1LCBkaW1zID0gMToyMCwgbi5uZWlnaGJvcnMgPSAxMjEpCkRpbVBsb3Qoc2V1LCBncm91cC5ieSA9ICJvcmlnLmlkZW50IikKCmBgYAoKRmluZCBjbHVzdGVycwoKYGBge3J9CgpzZXUgPC0gRmluZE5laWdoYm9ycyhzZXUsIGRpbXMgPSAxOjIwLCBrLnBhcmFtID0gMTIxKQojIHRoZSBudW1iZXIgb2YgY2x1c3RlcnMgaXMgZGVwZW5kZW50IG9uIHRoZSByZXNvbHV0aW9uIGEgbnVtYmVyIGZyb20gMC0yLiAKIyBIaWdoZXIgdmFsdWVzIG1ha2UgbW9yZSBjbHVzdGVycwojIHdlIGluY2x1ZGUgCnNldSA8LSBGaW5kQ2x1c3RlcnMoc2V1LCByZXNvbHV0aW9uID0gYygwLDAuMDUsMC4yNSwwLjYsMSwxLjUpICkKIwojIHdlIGNhbiB2aXN1YWxpemUgd2hpY2ggY2VsbHMgYXJlIGdyb3VwZWQgdG9nZXRoZXIgYXQgZGlmZmVyZW50IHJlc29sdXRpb25zIHVzaW5nIGNsdXN0cmVlCgpjbHVzdHJlZShzZXUsIHByZWZpeCA9ICJSTkFfc25uX3Jlcy4iKQoKIyAwLjYgbG9va3MgZ29vZCB0byBhbm5vdGF0ZS4gIEVhY2ggY2x1c3RlciBpcyBzcGxpdHRpbmcgYXBhcnQgdXAgdG8gdGhpcyBwb2ludCBhbmQgdGhlbiB0aGUgY2VsbHMgc3RhcnQgbWVyZ2luZyBhbmQgY2hhbmdpbmcgY2x1c3RlcnMuCgpgYGAKVmlzdWFsaXplCgpgYGB7cn0KRGltUGxvdChzZXUsIGdyb3VwLmJ5ID0gIlJOQV9zbm5fcmVzLjAuNiIsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzZXUsIGdyb3VwLmJ5ID0gIlJOQV9zbm5fcmVzLjEiLCBsYWJlbCA9IFRSVUUpCiMgY2x1c3RlcmluZyBjb3VsZCBiZSBpbXByb3ZlZAoKYGBgCgpMb29rIGF0IGV4cHJlc3Npb24gcHJvZmlsZXMgb2Yga25vd24gY2VsbCB0eXBlIG1hcmtlcnMKCmBgYHtyfQoKCmRhX25ldXJvbnMgPC0gYygiVEgiLCJTTEM2QTMiLCJTTEMxOEEyIiwiU09YNiIsIk5ETkYiLCJTTkNHIiwiQUxESDFBMSIsIkNBTEIxIiwiVEFDUjIiLCJTTEMxN0E2IiwiU0xDMzJBMSIsIk9UWDIiLCJHUlAiLCJMUEwiLCJDQ0siLCJWSVAiKQpOUENfb3JTdGVtTGlrZSA8LSBjKCJEQ1giLCJORVVST0QxIiwiVEJSMSIsIlBDTkEiLCJNS0k2NyIsIlNPWDIiLCJORVMiLCJQQVg2IiwiTUFTSDEiKQptYXR1cmVfbmV1cm9ucyA9IGMoIlJCRk9YMyIsIlNZUCIsIkRMRzQ1IiwiVkFNUDEiLCJWQU1QMiIsIlRVQkIzIiwiU1lUMSIsIkJTTiIsIkhPTUVSMSIsIlNMQzE3QTYiKQpleGNpdGF0b3J5X25ldXJvbnMgPSBjKCJHUklBMiIsIkdSSUExIiwiR1JJQTQiLCJHUklOMSIsIkdSSU4yQiIsIkdSSU4yQSIsIkdSSU4zQSIsIkdSSU4zIiwiR1JJUDEiLCJDQU1LMkEiKQppbmhiaXRvcnlfbmV1cm9ucyA9IGluaCA9IGMoIkdBRDEiLCJHQUQyIiwgIkdBVDEiLCJQVkFMQiIsIkdBQlIyIiwiR0FCUjEiLCJHQlJSMSIsIkdBQlJCMiIsIkdBQlJCMSIsIkdBQlJCMyIsIkdBQlJBNiIsIkdBQlJBMSIsIkdBQlJBNCIsIlRSQUsyIikKYXN0cm9jeXRlcyA8LSBjKCJHRkFQIiwiUzEwMEIiLCJBUVA0IiwiQVBPRSIsICJTT1g5IiwiU0xDMUEzIikKb2xpZ29kZW5kcm9jeXRlcyA8LSBjKCJNQlAiLCJNT0ciLCJPTElHMSIsIk9MSUcyIiwiU09YMTAiKQpvcGMgPC0gCnJhZGlhbF9nbGlhIDwtIGMoIlBUUFJDIiwiQUlGMSIsIkFER1JFMSIsICJWSU0iLCAiVE5DIiwiUFRQUloxIiwiRkFNMTA3QSIsIkhPUFgiLCJMSUZSIiwKICAgICAgICAgICAgICAiSVRHQjUiLCJJTDZTVCIsIlNMQzFBMyIpCmVwaXRoZWxpYWwgPC0gYygiSEVTMSIsIkhFUzUiLCJTT1gyIiwiU09YMTAiLCJORVMiLCJDREgxIiwiTk9UQ0gxIikKCm1pY3JvZ2xpYSA8LSBjKCJJQkExIiwiUDJSWTEyIiwiUDJSWTEzIiwiVFJFTTExOSIsICJHUFIzNCIsIlNJR0xFQ0giLCJUUkVNMiIsCiAgICAgICAgICAgICAgICJDWDNDUjEiLCJGQ1JMUyIsIk9MRk1MMyIsIkhFWEIiLCJUR0ZCUjEiLCAiU0FMTDEiLCJNRVJUSyIsCiAgICAgICAgICAgICAgICJQUk9TMSIpCgpmZWF0dXJlc19saXN0IDwtIGMoIk1LSTY3IiwiU09YMiIsIlBPVTVGMSIsIkRMWDIiLCJQQVg2IiwiU09YOSIsIkhFUzEiLCJORVMiLCJSQkZPWDMiLCJNQVAyIiwiTkNBTTEiLCJDRDI0IiwiR1JJQTIiLCJHUklOMkIiLCJHQUJCUjEiLCJHQUQxIiwiR0FEMiIsIkdBQlJBMSIsIkdBQlJCMiIsIlRIIiwiQUxESDFBMSIsIkxNWDFCIiwiTlI0QTIiLCJDT1JJTiIsIkNBTEIxIiwiS0NOSjYiLCJDWENSNCIsIklUR0E2IiwiU0xDMUEzIiwiQ0Q0NCIsIkFRUDQiLCJTMTAwQiIsICJQREdGUkEiLCJPTElHMiIsIk1CUCIsIkNMRE4xMSIsIlZJTSIsIlZDQU0xIikKCnNob3J0X2xpc3QgPC0gYygiTUtJNjciLCJTT1g5IiwiSEVTMSIsIk5FUyIsIkRMWDIiLCJSQkZPWDMiLCJNQVAyIiwiVEgiLCJDQUxCMSIsIktDTko2IiwiU0xDMUEzIiwiQ0Q0NCIsIkFRUDQiLCJTMTAwQiIsIk9MSUcyIiwiTUJQIiwiVklNIikKCiMgbXVzYXNoaS0yIGlzIE1TSTIKTlBDX2MgPC0gYygiRk9YRzEiLCJTT1gyIiwiVFVCQjMiLCJORVMiLCJNU0kyIiwiREtLMSIsIkRLSzMiLCJDVE5OQjEiLCJMUlA2IikKCgpgYGAKClZpZXcgb24gVU1BUAoKYGBge3J9CgpJZGVudHMoc2V1KSA8LSAiUk5BX3Nubl9yZXMuMC42IgoKZm9yIChpIGluIE5QQ19jKSB7CiAgcHJpbnQoRmVhdHVyZVBsb3Qoc2V1LCBmZWF0dXJlcyA9IGksIG1pbi5jdXRvZmYgPSAncTEnLCBtYXguY3V0b2ZmID0gJ3E5NycsIGxhYmVsID0gVFJVRSkpCn0KCmBgYAoKYGBge3J9CklkZW50cyhzZXUpIDwtICJSTkFfc25uX3Jlcy4wLjYiCgpmb3IgKGkgaW4gYXN0cm9jeXRlcykgewogIHByaW50KEZlYXR1cmVQbG90KHNldSwgZmVhdHVyZXMgPSBpLCBtaW4uY3V0b2ZmID0gJ3ExJywgbWF4LmN1dG9mZiA9ICdxOTcnLCBsYWJlbCA9IFRSVUUpKQp9CgpgYGAKCmBgYHtyfQoKSWRlbnRzKHNldSkgPC0gIlJOQV9zbm5fcmVzLjAuNiIKCmZvciAoaSBpbiByYWRpYWxfZ2xpYSkgewogIHByaW50KEZlYXR1cmVQbG90KHNldSwgZmVhdHVyZXMgPSBpLCBtaW4uY3V0b2ZmID0gJ3ExJywgbWF4LmN1dG9mZiA9ICdxOTcnLCBsYWJlbCA9IFRSVUUpKQp9CgpgYGAKCmBgYHtyfQpJZGVudHMoc2V1KSA8LSAiUk5BX3Nubl9yZXMuMC42IgoKbWF0dXJlX25ldXJvbnNCID0gYygiUkJGT1gzIiwiU1lQIiwiVkFNUDEiLCJWQU1QMiIsIlRVQkIzIiwiU1lUMSIsIkJTTiIsIkhPTUVSMSIsIlNMQzE3QTYiKQpmb3IgKGkgaW4gbWF0dXJlX25ldXJvbnNCKSB7CiAgcHJpbnQoRmVhdHVyZVBsb3Qoc2V1LCBmZWF0dXJlcyA9IGksIG1pbi5jdXRvZmYgPSAncTEnLCBtYXguY3V0b2ZmID0gJ3E5NycsIGxhYmVsID0gVFJVRSkpCn0KCgoKYGBgCgoKRG90IHBsb3RzIGFuZCBoZWF0bWFwcwoKYGBge3J9CkRvdFBsb3Qoc2V1LCBmZWF0dXJlcyA9IHJhZGlhbF9nbGlhKSsgUm90YXRlZEF4aXMoKQpEb3RQbG90KHNldSwgZmVhdHVyZXMgPSBOUENfb3JTdGVtTGlrZSkgKyBSb3RhdGVkQXhpcygpCkRvdFBsb3Qoc2V1LCBmZWF0dXJlcyA9IGFzdHJvY3l0ZXMpICsgUm90YXRlZEF4aXMoKQpEb3RQbG90KHNldSwgZmVhdHVyZXMgPSBOUENfYykgKyBSb3RhdGVkQXhpcygpCgpgYGAKCkZpbmQgY2x1c3RlciBtYXJrZXJzCgpgYGB7cn0KSWRlbnRzKHNldSkgPC0gIlJOQV9zbm5fcmVzLjAuNiIKQ2x1c3Rlck1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMoc2V1LCBvbmx5LnBvcyA9IFRSVUUpCgpgYGAKSGF2ZSBhIGxvb2sgYXQgdGhlIHRvcCBjbHVzdGVyIG1hcmtlcnMKYGBge3J9CmhlYWQoQ2x1c3Rlck1hcmtlcnMpCnRvcDUgPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3BfbihuPTUsIHd0ID1hdmdfbG9nMkZDKQoKdG9wMiA8LSBDbHVzdGVyTWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG49Miwgd3QgPWF2Z19sb2cyRkMpCkRvSGVhdG1hcChzZXUsIGZlYXR1cmVzID0gdG9wNSRnZW5lLCBzaXplID0gMywgYW5nbGUgPSA5MCwgZ3JvdXAuYnkgPSAiUk5BX3Nubl9yZXMuMC42IikKCkRvSGVhdG1hcChzZXUsIGZlYXR1cmVzID0gdG9wMiRnZW5lLCBzaXplID0gMywgYW5nbGUgPSA5MCwgZ3JvdXAuYnkgPSAiUk5BX3Nubl9yZXMuMC42IikKYGBgCgpOb3cgdXNlIEVucmljaFIgdG8gY2hlY2sgY2VsbCB0eXBlIGxpYnJhcmllcwoKYGBge3J9CnNldEVucmljaHJTaXRlKCJFbnJpY2hyIikgIyBIdW1hbiBnZW5lcwojIGxpc3Qgb2YgYWxsIHRoZSBkYXRhYmFzZXMKIyBnZXQgdGhlIHBvc3NpYmxlIGxpYnJhcmllcwpkYnMgPC0gbGlzdEVucmljaHJEYnMoKQoKIyB0aGlzIHdpbGwgbGlzdCB0aGUgcG9zc2libGUgbGlicmFyaWVzCmRicwoKIyBzZWxlY3QgbGlicmFyaWVzIHdpdGggY2VsbCB0eXBlcwpkYiA8LSBjKCdDZWxsTWFya2VyX0F1Z21lbnRlZF8yMDIxJywnQXppbXV0aF9DZWxsX1R5cGVzXzIwMjEnKQoKIyBmdW5jdGlvbiBmb3IgYSBxdWljayBsb29rCmNoZWNrQ2VsbHR5cGVzIDwtIGZ1bmN0aW9uKGNsdXN0ZXJfbnVtID0gMCl7CiAgY2x1c3RlclggPC0gQ2x1c3Rlck1hcmtlcnMgJT4lIGZpbHRlcihjbHVzdGVyID09IGNsdXN0ZXJfbnVtICYgYXZnX2xvZzJGQyA+IDAuMjUpCiAgZ2VuZXMgPC0gY2x1c3RlclgkZ2VuZQogICMgdGhlIGNlbGwgdHlwZSBsaWJyYXJpZXMKICAjIGdldCB0aGUgcmVzdWx0cyBmb3IgZWFjaCBsaWJyYXJ5CiAgY2x1c3RlclguY2VsbCA8LSBlbnJpY2hyKGdlbmVzLCBkYXRhYmFzZXMgPSBkYikKICAjIHZpc3VhbGl6ZSB0aGUgcmVzdWx0cwpwcmludChwbG90RW5yaWNoKGNsdXN0ZXJYLmNlbGxbWzFdXSwgc2hvd1Rlcm1zID0gMjAsIG51bUNoYXIgPSA0MCwgeSA9ICJDb3VudCIsIG9yZGVyQnkgPSAiUC52YWx1ZSIsIHRpdGxlID0gJ0NlbGxNYXJrZXJfQXVnbWVudGVkXzIwMjEnKSkKcHJpbnQocGxvdEVucmljaChjbHVzdGVyWC5jZWxsW1syXV0sIHNob3dUZXJtcyA9IDIwLCBudW1DaGFyID0gNDAsIHkgPSAiQ291bnQiLCBvcmRlckJ5ID0gIlAudmFsdWUiLCB0aXRsZSA9ICdBemltdXRoX0NlbGxfVHlwZXNfMjAyMScpKQoKfQoKCmBgYAoKQ2hlY2sgZWFjaCBjbHVzdGVyCmBgYHtyfQpjbHVzdGVyMCA8LSBjaGVja0NlbGx0eXBlcyhjbHVzdGVyX251bSA9IDApCgpgYGAKYGBge3J9CmNsdXN0ZXIxIDwtIGNoZWNrQ2VsbHR5cGVzKGNsdXN0ZXJfbnVtID0gMSkKYGBgCgpgYGB7cn0KY2x1c3RlcjIgPC0gY2hlY2tDZWxsdHlwZXMoY2x1c3Rlcl9udW0gPSAyKQpgYGAKCmBgYHtyfQpjbHVzdGVyMyA8LSBjaGVja0NlbGx0eXBlcyhjbHVzdGVyX251bSA9IDMpCmBgYApgYGB7cn0KY2x1c3RlcjQgPC0gY2hlY2tDZWxsdHlwZXMoY2x1c3Rlcl9udW0gPSA0KQpgYGAKYGBge3J9CmNsdXN0ZXI1IDwtIGNoZWNrQ2VsbHR5cGVzKGNsdXN0ZXJfbnVtID0gNSkKYGBgCmBgYHtyfQpjbHVzdGVyNiA8LSBjaGVja0NlbGx0eXBlcyhjbHVzdGVyX251bSA9IDYpCmBgYApgYGB7cn0KY2x1c3RlcjcgPC0gY2hlY2tDZWxsdHlwZXMoY2x1c3Rlcl9udW0gPSA3KQpgYGAKYGBge3J9CmNsdXN0ZXI4IDwtIGNoZWNrQ2VsbHR5cGVzKGNsdXN0ZXJfbnVtID0gOCkKYGBgCmBgYHtyfQpjbHVzdGVyOSA8LSBjaGVja0NlbGx0eXBlcyhjbHVzdGVyX251bSA9IDkpCmBgYAoKQWRkIGNlbGwgdHlwZSBhbm5vdGF0aW9ucwoKYGBge3J9CiMgd2UgbmVlZCB0byBzZXQgdGhlIGlkZW50aXR5IHRvIHJlbmFtZQpJZGVudHMoc2V1KSA8LSAiUk5BX3Nubl9yZXMuMC42IgoKIyB3ZSBuZWVkIHRvIG1ha2UgYSB2ZWN0b3Igb2YgdGhlIGNlbGwgdHlwZSBpbiB0aGUgc2FtZSBvcmRlciAtIGluIHRoZSBjbHVzdGVyIG9yZGVyCgpjZWxsX3R5cGVzIDwtIGMoIk5QQy1wbHVyaSIsICJOUEMiLCJOUEMiLAogICAgICAgICAgICAgICAgICJnbGlhIiwiZ2xpYSIsIk5ldXJvbiIsCiAgICAgICAgICAgICAgICAgImdsaWEtQVBPRSIsIk5QQy1taXhlZCIsIk5QQyIsCiAgICAgICAgICAgICAgICAgIk5QQy1UTkMiKQpuYW1lcyhjZWxsX3R5cGVzKSA8LSBsZXZlbHMoc2V1KQoKc2V1IDwtIFJlbmFtZUlkZW50cyhzZXUsIGNlbGxfdHlwZXMpCnNldSA8LSBBZGRNZXRhRGF0YShvYmplY3Q9c2V1LCBtZXRhZGF0YT1JZGVudHMoc2V1KSwgY29sLm5hbWUgPSAiQ2VsbFR5cGVzIikKCkRpbVBsb3Qoc2V1LCBsYWJlbCA9IFRSVUUpCgpJZGVudHMoc2V1KSA8LSAiUk5BX3Nubl9yZXMuMC42IgpjZWxsX3R5cGVzIDwtIGMoIk5QQy1wbHVyaSIsICJOUEMxIiwiTlBDMiIsCiAgICAgICAgICAgICAgICAgImdsaWExIiwiZ2xpYTIiLCJOZXVyb24iLAogICAgICAgICAgICAgICAgICJnbGlhMyIsIk5QQy1taXhlZCIsIk5QQy1kaXYiLAogICAgICAgICAgICAgICAgICJOUEMtVE5DIikKbmFtZXMoY2VsbF90eXBlcykgPC0gbGV2ZWxzKHNldSkKc2V1IDwtIFJlbmFtZUlkZW50cyhzZXUsIGNlbGxfdHlwZXMpCnNldSA8LSBBZGRNZXRhRGF0YShvYmplY3Q9c2V1LCBtZXRhZGF0YT1JZGVudHMoc2V1KSwgY29sLm5hbWUgPSAiQ2VsbHR5cGVzMSIpCgpEaW1QbG90KHNldSwgbGFiZWwgPSBUUlVFKQoKCmBgYAoKU2VlIGNlbGwgY291bnRzIGZvciBlYWNoIGxpbmUgYW5kIGNlbGwgdHlwZQoKYGBge3J9CmNkZiA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldSRzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQsc2V1JENlbGxUeXBlcykpCgpkZl93aWRlIDwtIGNkZiAlPiUKICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gVmFyMiwgdmFsdWVzX2Zyb20gPSBGcmVxKQoKZGZfd2lkZQoKd3JpdGUuY3N2KGRmX3dpZGUsICIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9BREhEX1pOWl9NY2dpbGwvc291cF9BREhEX2NlbGxjb3VudHNsaW5ldHlwZUp1bmUyOC5jc3YiKQoKYGBgCgoKYGBge3J9ClZsblBsb3Qoc2V1LCBmZWF0dXJlcyA9ICJuRmVhdHVyZV9STkEiLCBncm91cC5ieSA9ICJzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQiKQoKSWRlbnRzKHNldSk8LSAiQ2VsbFR5cGVzIgpEaW1QbG90KHNldSwgZ3JvdXAuYnkgPSAic291cG9yY2VsbF9hc3NpZ25tZW50IiwgbGFiZWwgPSBUUlVFKQoKYGBgCgpXZSBtaWdodCBuZWVkIHRvIHNlcGFyYXRlIGFuZCBoYXJtb25pemUgZWFjaCBjZWxsIHR5cGUuCgpgYGB7cn0KIyBtYWtlIGEgbGlzdCBvZiBzZXVyYXQgb2JqZWN0cyBieSBvdXIgY2VsbCB0eXBlIHZhcmlhYmxlCnN1Ymxpc3QgPC0gU3BsaXRPYmplY3Qoc2V1LCBzcGxpdC5ieSA9ICJzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQiKQojIG5vcm1hbGl6ZSBhbmQgZmluZCB2YXJpYWJsZSBmZWF0dXJlcwpmb3IgKGkgaW4gMTpsZW5ndGgoc3VibGlzdCkpewogIHN1Ymxpc3RbW2ldXSA8LSBOb3JtYWxpemVEYXRhKHN1Ymxpc3RbW2ldXSwgdmVyYm9zZSA9IEZBTFNFKQogIHN1Ymxpc3RbW2ldXSA8LSBGaW5kVmFyaWFibGVGZWF0dXJlcyhzdWJsaXN0W1tpXV0sIHNlbGVjdGlvbi5tZXRob2QgPSAidnN0IikKfQoKCgpgYGAKCmBgYHtyfQojIENyZWF0ZSBhbiBlbXB0eSBTZXVyYXQgb2JqZWN0IHRvIHN0b3JlIHRoZSBpbnRlZ3JhdGVkIGRhdGEKIyBUYWtlIHRoZSBmaXJzdCBTZXVyYXQgb2JqZWN0IGZyb20gdGhlIGxpc3QgYXMgdGhlIHN0YXJ0aW5nIHBvaW50CmludGVncmF0ZWRfc2V1cmF0IDwtIHN1YnNldChzdWJsaXN0W1sxXV0pCgoKIyBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgU2V1cmF0IG9iamVjdHMKZm9yIChpIGluIDE6bGVuZ3RoKHN1Ymxpc3QpKSB7CiAgIyBSZW5hbWUgdGhlICdvcmlnLmlkZW50JyBtZXRhZGF0YSBpbnNpZGUgdGhlIHNldXJhdCBvYmplY3QgdG8gbWF0Y2ggdGhlIG9iamVjdCBuYW1lIGluIHRoZSBsaXN0CiAgc3VibGlzdFtbaV1dJG9yaWcuaWRlbnQgPC0gbmFtZXMoc3VibGlzdClbaV0KCn0KCnNhbXBsZS5saXN0IDwtIHN1Ymxpc3QKZm9yIChpIGluIDE6bGVuZ3RoKHNhbXBsZS5saXN0KSkgewogICMgTm9ybWFsaXplIGFuZCBzY2FsZSB0aGUgZGF0YQogIHNhbXBsZS5saXN0W1tpXV0gPC0gTm9ybWFsaXplRGF0YShzYW1wbGUubGlzdFtbaV1dLCB2ZXJib3NlID0gRkFMU0UpCiAgc2FtcGxlLmxpc3RbW2ldXSA8LSBTY2FsZURhdGEoc2FtcGxlLmxpc3RbW2ldXSwgdmVyYm9zZSA9IEZBTFNFKQogICMgRmluZCB2YXJpYWJsZSBmZWF0dXJlcwogIHNhbXBsZS5saXN0W1tpXV0gPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2FtcGxlLmxpc3RbW2ldXSwgc2VsZWN0aW9uLm1ldGhvZCA9ICJ2c3QiKQogICMgR2V0IHRoZSB2YXJpYWJsZSBmZWF0dXJlcwogIHZhcmlhYmxlX2ZlYXR1cmVzIDwtIFZhcmlhYmxlRmVhdHVyZXMoc2FtcGxlLmxpc3RbW2ldXSkKICAjIFJ1biBQQ0Egd2l0aCB0aGUgdmFyaWFibGUgZmVhdHVyZXMKICBzYW1wbGUubGlzdFtbaV1dIDwtIFJ1blBDQShzYW1wbGUubGlzdFtbaV1dLCB2ZXJib3NlID0gRkFMU0UsIG5wY3MgPSAzMCwgZmVhdHVyZXMgPSB2YXJpYWJsZV9mZWF0dXJlcykKfQoKaW50LmFuY2hvcnMgPC0gRmluZEludGVncmF0aW9uQW5jaG9ycyhvYmplY3QubGlzdCA9IHNhbXBsZS5saXN0LCBkaW1zID0gMTozMCwgcmVkdWN0aW9uID0gInJwY2EiKQppbnRlZ3JhdGVkX3NldXJhdCA8LSBJbnRlZ3JhdGVEYXRhKGFuY2hvcnNldCA9IGludC5hbmNob3JzLCAgZGltcyA9IDE6MzAsIGsud2VpZ2h0ID0gNzIpCiMgdGhlIGsgdmFsdWUgaXMgdGhlIHByb2JsZW0KIyBtdXN0IHNldCB0aGUgayB3ZWlnaHQgdG8gdGhlIGxvd2VzdCBjZWxsIGNvdW50CgoKYGBgClNhdmUgc28gZmFyCgpgYGB7cn0Kc2F2ZVJEUyhzZXUsICIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9BREhEX1pOWl9NY2dpbGwvc2V1X2Fubl9KdW5lMjguUkRTIikKc2F2ZVJEUyhpbnRlZ3JhdGVkX3NldXJhdCwgIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FESERfWk5aX01jZ2lsbC9JbnRlZ3Jfc2V1X2Fubl9KdW5lMjguUkRTIikKCmBgYAoKCmBgYHtyfQpEaW1QbG90KHNldSwgZ3JvdXAuYnkgPSAic291cG9yY2VsbF9hc3NpZ25tZW50Iiwgc3BsaXQuYnkgPSAiQ2VsbFR5cGVzIikKCmBgYAoKCgoKCmBgYHtyfQoKRGVmYXVsdEFzc2F5KGludGVncmF0ZWRfc2V1cmF0KSA8LSAiaW50ZWdyYXRlZCIKaW50ZWdyYXRlZF9zZXVyYXQgPC0gU2NhbGVEYXRhKGludGVncmF0ZWRfc2V1cmF0LCB2ZXJib3NlID0gRkFMU0UpCiMgb25seSB0aGUgaW50ZWdyYXRlZCBmZWF0dXJlcyB3aWxsIGJlIHRoZSBwY2EgaW5wdXQKCmludGVncmF0ZWRfc2V1cmF0IDwtIFJ1blBDQShpbnRlZ3JhdGVkX3NldXJhdCwgbnBjcyA9IDIwLCB2ZXJib3NlID0gRkFMU0UpCmludGVncmF0ZWRfc2V1cmF0IDwtIFJ1blVNQVAoaW50ZWdyYXRlZF9zZXVyYXQsIHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMToyMCwgbi5uZWlnaGJvcnMgPSA4MSkKCkRpbVBsb3QoaW50ZWdyYXRlZF9zZXVyYXQsIGdyb3VwLmJ5ID0gInNvdXBvcmNlbGxfYXNzaWdubWVudCIpCgpgYGAKYGBge3J9CkRpbVBsb3QoaW50ZWdyYXRlZF9zZXVyYXQsIGdyb3VwLmJ5ID0gIkNlbGxUeXBlcyIpCgoKYGBgCmBgYHtyfQoKRGltUGxvdChpbnRlZ3JhdGVkX3NldXJhdCwgZ3JvdXAuYnkgPSAic291cG9yY2VsbF9hc3NpZ25tZW50Iiwgc3BsaXQuYnkgPSAiQ2VsbFR5cGVzIikKCgpgYGAKCgpgYGB7cn0KCmludGVncmF0ZWRfc2V1cmF0IDwtIEZpbmROZWlnaGJvcnMoaW50ZWdyYXRlZF9zZXVyYXQsIGRpbXMgPSAxOjIwLCBrLnBhcmFtID0gODEpCmludGVncmF0ZWRfc2V1cmF0IDwtIEZpbmRDbHVzdGVycyhpbnRlZ3JhdGVkX3NldXJhdCwgcmVzb2x1dGlvbiA9IGMoMC42LDEpICkKCmBgYApgYGB7cn0KRGltUGxvdChpbnRlZ3JhdGVkX3NldXJhdCwgZ3JvdXAuYnkgPSAib3JpZy5pZGVudCIpCiNtdWNoIGJldHRlciBpbnRlZ3JhdGlvbgpgYGAKYGBge3J9CiNpbnRlZ3JhdGVkX3NldXJhdCRpbnRlZ3JhdGVkX3Nubl9yZXMuMC42CkRpbVBsb3QoaW50ZWdyYXRlZF9zZXVyYXQsIGdyb3VwLmJ5ID0gImludGVncmF0ZWRfc25uX3Jlcy4wLjYiLCBsYWJlbD1UUlVFKQpEaW1QbG90KGludGVncmF0ZWRfc2V1cmF0LCBncm91cC5ieSA9ICJpbnRlZ3JhdGVkX3Nubl9yZXMuMSIsIGxhYmVsID0gVFJVRSkKCmBgYAoKTm93IGNlbGxzIHBlciBjbHVzdGVyCgpgYGB7cn0KdGFibGUoaW50ZWdyYXRlZF9zZXVyYXQkaW50ZWdyYXRlZF9zbm5fcmVzLjAuNiwgaW50ZWdyYXRlZF9zZXVyYXQkb3JpZy5pZGVudCkKCnRhYmxlKGludGVncmF0ZWRfc2V1cmF0JGludGVncmF0ZWRfc25uX3Jlcy4xLCBpbnRlZ3JhdGVkX3NldXJhdCRvcmlnLmlkZW50KQpgYGAKCldoaWNoIGNlbGxzIG1hdGNoIHRvIHdoaWNoIHN1YmplY3Q/CgpGcm9tIE1pY2hhZWxzIGNvcnJlbGF0aW9uOgpgYGB7cn0KY29kZS50YiA8LSByZWFkLnRhYmxlKGZpbGUgPSAiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvQURIRF9aTlpfTWNnaWxsL0dlbm90eXBlX0lEX2tleS50eHQiLCAKaGVhZGVyID0gVFJVRSwgc2VwID0gIlx0IikKCmNsYXNzKGNvZGUudGIpCgoKYGBgCmBgYHtyfQoKIyBhZGQgdGhlIGFzc2lnbmVkIGxpbmVzIGludG8gdGhlIHNldXJhdCBvYmplY3QKIyBBc3N1bWluZyB5b3VyIGRhdGEgZnJhbWUgaXMgbmFtZWQgJ2xvb2t1cF9kZicgYW5kIGhhcyBjb2x1bW5zICdHZW5vdHlwZV9JRCcgYW5kICdDbHVzdGVyX0lEJwpsb29rdXBfdGFibGUgPC0gY29kZS50YlssIGMoIkNsdXN0ZXJfSUQiLCAiR2Vub3R5cGVfSUQiKV0KIyBhZGQgdGhlIGEgbmV3IG1ldGFkYXRhIHNsb3QKc2V1JEdlbm90eXBlX0lEIDwtIGxvb2t1cF90YWJsZSRHZW5vdHlwZV9JRFttYXRjaChzZXUkc291cG9yY2VsbF9hc3NpZ25tZW50LCBsb29rdXBfdGFibGUkQ2x1c3Rlcl9JRCldCgoKc2V1JEdlbm90eXBlX0lEIDwtIGlmZWxzZSgKICBzZXUkc291cG9yY2VsbF9hc3NpZ25tZW50ICVpbiUgbG9va3VwX3RhYmxlJENsdXN0ZXJfSUQsCiAgbG9va3VwX3RhYmxlJEdlbm90eXBlX0lEW21hdGNoKHNldSRzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQsIGxvb2t1cF90YWJsZSRDbHVzdGVyX0lEKV0sCiAgInVuYXNzaWduZWQiCikKCgoKdW5pcXVlKHNldSRHZW5vdHlwZV9JRCkKCmBgYApBZGQgZ2Vub3R5cGUgdG8gaW50ZXJncmF0ZWQgb2JqZWN0CgpgYGB7cn0KbG9va3VwX3RhYmxlIDwtIGNvZGUudGJbLCBjKCJDbHVzdGVyX0lEIiwgIkdlbm90eXBlX0lEIildCiMgYWRkIHRoZSBhIG5ldyBtZXRhZGF0YSBzbG90CmludGVncmF0ZWRfc2V1cmF0JEdlbm90eXBlX0lEIDwtIGxvb2t1cF90YWJsZSRHZW5vdHlwZV9JRFttYXRjaChpbnRlZ3JhdGVkX3NldXJhdCRzb3Vwb3JjZWxsX2Fzc2lnbm1lbnQsIGxvb2t1cF90YWJsZSRDbHVzdGVyX0lEKV0KCgppbnRlZ3JhdGVkX3NldXJhdCRHZW5vdHlwZV9JRCA8LSBpZmVsc2UoCiAgaW50ZWdyYXRlZF9zZXVyYXQkc291cG9yY2VsbF9hc3NpZ25tZW50ICVpbiUgbG9va3VwX3RhYmxlJENsdXN0ZXJfSUQsCiAgbG9va3VwX3RhYmxlJEdlbm90eXBlX0lEW21hdGNoKGludGVncmF0ZWRfc2V1cmF0JHNvdXBvcmNlbGxfYXNzaWdubWVudCwgbG9va3VwX3RhYmxlJENsdXN0ZXJfSUQpXSwKICAidW5hc3NpZ25lZCIKKQoKCgp1bmlxdWUoaW50ZWdyYXRlZF9zZXVyYXQkR2Vub3R5cGVfSUQpCgpgYGAKCkludGVncmF0ZWQgb2JqZWN0IGFubm90YXRpb25zCgpgYGB7cn0KdGFibGUoaW50ZWdyYXRlZF9zZXVyYXQkQ2VsbFR5cGVzLCBpbnRlZ3JhdGVkX3NldXJhdCRpbnRlZ3JhdGVkX3Nubl9yZXMuMC42KQoKYGBgCgpgYGB7cn0KCklkZW50cyhpbnRlZ3JhdGVkX3NldXJhdCkgPC0gImludGVncmF0ZWRfc25uX3Jlcy4wLjYiCkNsdXN0ZXJNYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKGludGVncmF0ZWRfc2V1cmF0LCBvbmx5LnBvcyA9IFRSVUUpICAKCgpgYGAKCgoKYGBge3J9CgpjaGVja0NlbGx0eXBlcyhjbHVzdGVyX251bSA9IDEyKQoKYGBgCgpBZGQgYW5ub3RhdGlvbgoKYGBge3J9CgojIHdlIG5lZWQgdG8gc2V0IHRoZSBpZGVudGl0eSB0byByZW5hbWUKSWRlbnRzKGludGVncmF0ZWRfc2V1cmF0KSA8LSAiaW50ZWdyYXRlZF9zbm5fcmVzLjAuNiIKCiMgd2UgbmVlZCB0byBtYWtlIGEgdmVjdG9yIG9mIHRoZSBjZWxsIHR5cGUgaW4gdGhlIHNhbWUgb3JkZXIgLSBpbiB0aGUgY2x1c3RlciBvcmRlcgoKY2VsbF90eXBlcyA8LSBjKCJSRyIsICJOUEMtc3RlbSIsImdsaWEtc3RlbSIsCiAgICAgICAgICAgICAgICAgIk5QQy1kaXYxIiwiTmV1cm9uIiwiTlBDLXN0ZW0yIiwiTlBDLWRpdjIiLAogICAgICAgICAgICAgICAgICJOUEMtbWl4ZWQiLCJnbGlhIiwiYXN0cm8iLCJOUEMtZGl2MyIsCiAgICAgICAgICAgICAgICAgIk5QQy1wbHVyaSIsImdsaWEtUkciKQpuYW1lcyhjZWxsX3R5cGVzKSA8LSBsZXZlbHMoaW50ZWdyYXRlZF9zZXVyYXQpCgppbnRlZ3JhdGVkX3NldXJhdCA8LSBSZW5hbWVJZGVudHMoaW50ZWdyYXRlZF9zZXVyYXQsIGNlbGxfdHlwZXMpCmludGVncmF0ZWRfc2V1cmF0IDwtIEFkZE1ldGFEYXRhKG9iamVjdD1pbnRlZ3JhdGVkX3NldXJhdCwgbWV0YWRhdGE9SWRlbnRzKGludGVncmF0ZWRfc2V1cmF0KSwgY29sLm5hbWUgPSAiQ2VsbFR5cGVzSW50IikKCkRpbVBsb3QoaW50ZWdyYXRlZF9zZXVyYXQsIGxhYmVsID0gVFJVRSwgbGFiZWwuc2l6ZSA9IDIpCgpJZGVudHMoaW50ZWdyYXRlZF9zZXVyYXQpIDwtICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC42IgoKIyB3ZSBuZWVkIHRvIG1ha2UgYSB2ZWN0b3Igb2YgdGhlIGNlbGwgdHlwZSBpbiB0aGUgc2FtZSBvcmRlciAtIGluIHRoZSBjbHVzdGVyIG9yZGVyCgpjZWxsX3R5cGVzIDwtIGMoIlJHIiwgIk5QQy1zdGVtIiwiZ2xpYSIsCiAgICAgICAgICAgICAgICAgIk5QQy1kaXYiLCJOZXVyb24iLCJOUEMtc3RlbSIsIk5QQy1kaXYiLAogICAgICAgICAgICAgICAgICJOUEMtbWl4ZWQiLCJnbGlhIiwiYXN0cm8iLCJOUEMtbWl4ZWQiLAogICAgICAgICAgICAgICAgICJOUEMtc3RlbSIsImdsaWEyIikKbmFtZXMoY2VsbF90eXBlcykgPC0gbGV2ZWxzKGludGVncmF0ZWRfc2V1cmF0KQoKaW50ZWdyYXRlZF9zZXVyYXQgPC0gUmVuYW1lSWRlbnRzKGludGVncmF0ZWRfc2V1cmF0LCBjZWxsX3R5cGVzKQppbnRlZ3JhdGVkX3NldXJhdCA8LSBBZGRNZXRhRGF0YShvYmplY3Q9aW50ZWdyYXRlZF9zZXVyYXQsIG1ldGFkYXRhPUlkZW50cyhpbnRlZ3JhdGVkX3NldXJhdCksIGNvbC5uYW1lID0gIkNlbGxUeXBlc0ludDIiKQoKRGltUGxvdChpbnRlZ3JhdGVkX3NldXJhdCwgbGFiZWwgPSBUUlVFLCBsYWJlbC5zaXplID0gMikKCmBgYAoKCk5vdyBtYWtlIGEgdGFibGUgb2YgdGhlIGFzc2lnbmVkIGNlbGwgY291bnRzCgpgYGB7cn0KCnNldSA8LSBpbnRlZ3JhdGVkX3NldXJhdAoKZ2VuZS5jb3VudCA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldSRHZW5vdHlwZV9JRCkpCgpncm91cC5nZW5lIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoc2V1JHNvdXBvcmNlbGxfYXNzaWdubWVudCwgc2V1JEdlbm90eXBlX0lEKSkKCnNvdXAuY291bnQgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShzZXUkc291cG9yY2VsbF9hc3NpZ25tZW50KSkKCiMgQXNzdW1pbmcgeW91ciBsb25nIHRhYmxlIGlzIG5hbWVkICdsb25nX3RhYmxlJwp3aWRlX3RhYmxlIDwtIGdyb3VwLmdlbmUgJT4lCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IFZhcjEsIHZhbHVlc19mcm9tID0gRnJlcSkKCndpZGVfdGFibGUKd3JpdGUuY3N2KHdpZGVfdGFibGUsIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FESERfWk5aX01jZ2lsbC9Tb3Vwb0dlbmVJREp1bmUyOC5jc3YiKQoKYGBgCgoKUmVhZCBpbiBhbm5vdGF0ZWQgb2JqZWN0IHNhdmVkIEp1bmUgMjgKCmBgYHtyfQpzZXUgPC0gcmVhZFJEUygiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvQURIRF9aTlpfTWNnaWxsL0ludGVncl9zZXVfYW5uX0p1bmUyOC5SRFMiKQoKYGBgCgpDaGVjayBpZiBpdCdzIGNvcnJlY3QKCmBgYHtyfQpEaW1QbG90KHNldSkKCmBgYApBZGQgbWV0YSBkYXRhIC0gZGlhZ25vc2lzCgpgYGB7cn0KCiNzZXUkc291cG9yY2VsbF9hc3NpZ25tZW50CiNzZXUkR2Vub3R5cGVfSUQKSWRlbnRzKHNldSkgPC0gIkdlbm90eXBlX0lEIgpsZXZlbHMoc2V1KQoKZGlhZ25vc2UgPC0gYygiQURIRCIsIkNvbnRyb2wiLCJDb250cm9sIiwiQ29udHJvbCIsCiAgICAgICAgICAgICAgIlVuYXNzaWduZWQiLCJBREhEIiwiQURIRCIsIkFESEQiLCJBREhELW5vbiIsIkNvbnRyb2wiKQoKbmFtZXMoZGlhZ25vc2UpIDwtIGxldmVscyhzZXUpCgpzZXUgPC0gUmVuYW1lSWRlbnRzKHNldSwgZGlhZ25vc2UpCnNldSA8LSBBZGRNZXRhRGF0YShvYmplY3Q9c2V1LCBtZXRhZGF0YT1JZGVudHMoc2V1KSwgY29sLm5hbWUgPSAiRGlhZ25vc2lzIikKCkRpbVBsb3Qoc2V1LCBsYWJlbCA9IEZBTFNFKQoKYGBgCgpEaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGJ5IGNlbGwgdHlwZQoKYGBge3J9CmNvbG5hbWVzKHNldUBtZXRhLmRhdGEpCiMgc3Vic2V0IHRoZSBjZWxsIHR5cGUgd2UgYXJlIGludGVyZXN0ZWQKSWRlbnRzKHNldSkgPC0gIkNlbGxUeXBlc0ludDIiCmxldmVscyhzZXUpCgpgYGAKCmBgYHtyfQojIGdldCBqdXN0IHRoZSBOUEMtZGl2IGNlbGxzCk5QQ19kaXYgPC0gc3Vic2V0KHNldSwgaWRlbnRzID0gIk5QQy1kaXYiKQpsZXZlbHMoTlBDX2RpdikKCmBgYAoKYGBge3J9CiMgREdFCk5QQ19kaXYgPC0gU2NhbGVEYXRhKE5QQ19kaXYpCgpJZGVudHMoTlBDX2RpdikgPC0gIkRpYWdub3NpcyIKTlBDX2Rpdl9ER0UgPC0gRmluZE1hcmtlcnMoTlBDX2RpdiwgaWRlbnQuMSA9ICJBREhEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQuMiA9ICJDb250cm9sIiwgbG9nZmMudGhyZXNob2xkID0gMC4wMSkKCndyaXRlLmNzdihOUENfZGl2X0RHRSwgIi9Vc2Vycy9yaGFsZW5hdGhvbWFzL0RvY3VtZW50cy9EYXRhL3NjUk5Bc2VxL0FESERfWk5aX01jZ2lsbC9OUENfZGl2X0RHRS5jc3YiKQoKCgpgYGAKCgpDaGVjayBzb21lIGV4cHJlc3Npb24KCmBgYHtyfQoKRG9IZWF0bWFwKE5QQ19kaXYsIGdyb3VwLmJ5ID0gIkRpYWdub3NpcyIsIGZlYXR1cmVzID0gYygiWElTVCIsIktSVDE4IiwiQ1JBQlAxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlJaQiIsIkEyTSIsIkNIQ0hEMiIpKQoKRG90UGxvdChOUENfZGl2LCBncm91cC5ieSA9ICJEaWFnbm9zaXMiLCBmZWF0dXJlcyA9IGMoIlhJU1QiLCJLUlQxOCIsIkNSQUJQMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZSWkIiLCJBMk0iLCJDSENIRDIiKSkrUm90YXRlZEF4aXMoKQoKYGBgCgpOUEMtc3RlbQoKYGBge3J9CgpJZGVudHMoc2V1KSA8LSAiQ2VsbFR5cGVzSW50MiIKCiMgZ2V0IGp1c3QgdGhlIE5QQy1zdGVtIGNlbGxzCk5QQ19zdGVtIDwtIHN1YnNldChzZXUsIGlkZW50cyA9ICJOUEMtc3RlbSIpCmxldmVscyhOUENfc3RlbSkKCiMgREdFCgpJZGVudHMoTlBDX3N0ZW0pIDwtICJEaWFnbm9zaXMiCk5QQ19zdGVtX0RHRSA8LSBGaW5kTWFya2VycyhOUENfc3RlbSwgaWRlbnQuMSA9ICJBREhEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQuMiA9ICJDb250cm9sIiwgbG9nZmMudGhyZXNob2xkID0gMC4wMSkKCndyaXRlLmNzdihOUENfc3RlbV9ER0UsICIvVXNlcnMvcmhhbGVuYXRob21hcy9Eb2N1bWVudHMvRGF0YS9zY1JOQXNlcS9BREhEX1pOWl9NY2dpbGwvTlBDX3N0ZW1fREdFLmNzdiIpCgpgYGAKCmBgYHtyfQoKZGdlIDwtIGMoIkNBNCIsIlNUTU4yIiwiS1JUMTgiLCJISVNUMUgxQSIsIlMxMDBBMTAiLCJJRkkyNyIsIkNMU1BOIiwiSUZJNiIsIkhFTExTIiwgIkFDVEMxIikKCkRvSGVhdG1hcChOUENfZGl2LCBncm91cC5ieSA9ICJEaWFnbm9zaXMiLCBmZWF0dXJlcyA9IGRnZSkKCkRvdFBsb3QoTlBDX2RpdiwgZ3JvdXAuYnkgPSAiRGlhZ25vc2lzIiwgZmVhdHVyZXMgPSBkZ2UpK1JvdGF0ZWRBeGlzKCkKCmBgYAoKYGBge3J9CklkZW50cyhzZXUpIDwtICJDZWxsVHlwZXNJbnQyIgoKIyBnZXQganVzdCB0aGUgbmV1cm9uIGNlbGxzCm5ldXJvbnMgPC0gc3Vic2V0KHNldSwgaWRlbnRzID0gIk5ldXJvbiIpCgoKIyBER0UKCklkZW50cyhuZXVyb25zKSA8LSAiRGlhZ25vc2lzIgpuZXVyb25zX0RHRSA8LSBGaW5kTWFya2VycyhuZXVyb25zLCBpZGVudC4xID0gIkFESEQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudC4yID0gIkNvbnRyb2wiLCBsb2dmYy50aHJlc2hvbGQgPSAwLjAxKQoKd3JpdGUuY3N2KG5ldXJvbnNfREdFLCAiL1VzZXJzL3JoYWxlbmF0aG9tYXMvRG9jdW1lbnRzL0RhdGEvc2NSTkFzZXEvQURIRF9aTlpfTWNnaWxsL05ldXJvbnNfREdFLmNzdiIpCgoKYGBgCgoKCg==